การใช้งาน Storyboard Segue ตอนที่ 2 ต่อจากบทความที่แล้วนะครับ เรื่องของการใช้งาน Storyboard Segue ใน Xcode 4.2 เราจะมาดู
วิธีการส่งค่าจากหน้า View Controller แรกไปหน้า View Controller ที่สอง มันจะทำยังไงน๋อ
เรามาดูวีดีโอตัวอย่างกันสักหน่อยดีกว่า
อธิบายเพิ่มเติม
ในบทความนี้เราจะได้เรียนรู้เพิ่มเติมเกี่ยวกับการใช้งานฟังก์ชั่น performSegueWithIdentifier และ ฟังก์ชั่น prepareForSegue นะครับ
ข้อควรจำ
- ฟังก์ชั่น performSegueWithIdentifier เอาไว้ใช้เรียกใช้งาน Segue ที่เราสร้างขึ้นใน storyboard
- ฟังก์ชั่น prepareForSegue นั้นใช้สำหรับส่งค่าไปยัง หน้า ViewController ปลายทาง ดังตัวอย่างนะครับ
03 | - (IBAction)seeDetail:(id)sender { |
09 | [self performSegueWithIdentifier:@ "line1" sender:sender]; |
13 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ |
35 | if ([segue.identifier isEqualToString:@ "line1" ]){ |
43 | Page2 *p = (Page2*)segue.destinationViewController; |
49 | p.bName = ((UIButton*)sender).titleLabel.text; |
ตอนนี้เราได้แต่เพียงส่งค่าตัวแปรไปยังอีกหน้าถัดไปเท่านั้นนะครับ เราไม่ได้เขียนเปลี่ยนค่า UI ในหน้าถัดไปเลย เพราะเนื่องจาก
ฟังก์ชั่น prepareForSegue เนี่ย ทำก่อนฟังก์ชั่น viewDidLoad ของหน้าต่อไปนั้นเอง ดังนั้นในหน้าถัดที่เราส่งค่าไป เราจึงต้องทำการ
เปลี่ยนค่า UI ในฟังก์ชั่น viewDidLoad ด้วยค่าตัวแปรที่หน้าแรกส่งมาให้ ดังนี้
13 | nImage.image = [UIImage imageNamed:[bName stringByAppendingFormat:@ ".png" ]]; |
เราก้อจะสามารถส่งค่าจากหน้าหนึ่งไปยังอีกหน้าหนึ่งได้แล้วครับ สรุปขั้นตอนง่ายๆ มีอยู่ว่า
- เราต้องเรียก Segue ที่เราสร้างใน storyboard เสียก่อน ด้วยฟังก์ชั่น performSegueWithIdentifier
- ส่งค่าไปที่หน้าปลายทางในฟังก์ชั่น prepareForSegue ด้วยค่า segue.destinationViewController
- ในหน้าปลายทาง ในฟังก์ชั่น viewDidLoad เราก็นำค่าที่ส่งจากหน้าที่แล้วมา ให้ค่ากับ UI ของเรา ก็เป็นอันเรียบร้อย
เป็นอย่างไรบ้างครับ สำหรับการใช้งาน Segue ในการส่งค่าจากหน้าหนึ่งไปยังหน้าหนึ่ง นั้นไม่ยากเลยใช่มั้ยครับ หากเพื่อนๆ มีข้อ
สงสัย หรืออยากทราบอะไรเพิ่มเติมเกี่ยวกับการใช้งาน Storyboard Segue ก้อคอมเม้นที่ด้านล่างได้เลยนะครับ แต่บทความสำหรับ
Segue ยังไม่หมดเพียงเท่านี้นะครับ ติดตามกันต่อไปนะครับ :)