Binding action
Last updated
Last updated
เราเริ่มด้วยการสร้าง ViewController ให้หน้า Add New Item
New File เลือก Cocoa Touch Class แล้วกด Next
ถัดมาตั้งชื่อ Controller ใหม่ของเราเป็น AddNewItemViewController โดยเลือกให้ Subclass เป็น UIViewController
ไม่เลือก Also create XIB file เลือก Language เป็น Swift แล้วกด Next
เราต้องผูกหน้า Add New Item ใน Main.storyboard ให้รู้ว่าต้องใช้ Controller ใหม่ที่เราเพิ่งสร้าง
โดยการเลือกหน้า Add New Item ใน Main.storyboard จากนั้นเลือกที่ Identity Inspector กรอกชื่อ AddNewItemViewController ลงในช่อง Class แล้วกด enter
ให้เราเลือก Add New Item ใน storyboard แล้ว กดปุ่ม Adjust Editor Options เพื่อเปลี่ยนเป็นโหมด Assistant Editor เมื่อเลือกแล้ว Xcode จะเปิด AddNewItemViewController ให้อัตโนมัติ
ในกรณีที่ Xcode แสดง Editor เปล่าไม่แสดงไฟล์ AddNewItemViewController ให้ปิดแล้วเปิดใหม่
หากยังไม่สามารถเปิดได้ให้ข้ามลงไปที่หัวข้อ กรณีที่ไม่สามารถเปิด Assistant ได้
จากนั้นให้กด Ctrl ค้างแล้วลากจากปุ่ม Done เข้ามาที่ AddNewItemViewController
เลือก Connection เป็น Action ตั้งชื่อว่า doneButtonDidTap ตั้ง Type เป็น UIBarButtonItem จะปรากฎฟังก์ชั่นขึ้นที่ AddNewItemViewController
เราสามารถลากจาก code กลับไปที่ Storyboard ได้ โดยสร้างฟังก์ชั่นตามนี้
จากนั้นลากจากวงกลมเล็ก ๆ หน้าฟังก์ชั่นกลับไปที่ปุ่ม Cancel
@IBAction เป็นการระบุให้ Storyboard มองเห็น โดย @IBAction จะเห็นเป็น Action และ @IBOutlet จะเห็นเป็น Outlet
Action คือจุดที่รับ event จาก view เช่น รับ event จากการกดปุ่ม
Outlet คือการผูก view เพื่อ Set หรือ Get property จาก view นั้น เช่น ต้องการอ่านค่าจากช่อง TextField ที่ผู้ใช้กรอกเข้ามา
ให้เราเปิดไฟล์ AddNewItemViewController.swift แล้วเพิ่มโค้ดให้เป็นแบบนี้
บรรทัดที่ 7-8 เป็น ฟังก์ชั่นที่เราเตรียมไว้สำหรับปุ่ม done บรรทัดที่ 10-11 เป็น ฟังก์ชั่นที่เราเตรียมไว้สำหรับปุ่ม cancel
จากนั้นเราเปิด Main.storyboard แล้วคลิ๊กขวาที่ Add New Item controller ให้เราเชื่อมฟังก์ชั่นที่เราสร้างกับปุ่มใน document outline
@IBAction เป็นการระบุให้ Storyboard มองเห็น โดย @IBAction จะเห็นเป็น Action และ @IBOutlet จะเห็นเป็น Outlet
Action คือจุดที่รับ event จาก view เช่น รับ event จากการกดปุ่ม
Outlet คือการผูก view เพื่อ Set หรือ Get property จาก view นั้น เช่น ต้องการอ่านค่าจากช่อง TextField ที่ผู้ใช้กรอกเข้ามา
ทดสอบว่า action ใช้งานได้โดยการ print log ออกมา
เมื่อเรารันแล้วทดสอบกดปุ่มจะเห็น log ออกมา
โค้ดสุดท้ายของ AddNewItemViewController ในบทนี้
Action หรือ Outlet ที่เราใช้การผูกไปแล้ว ถ้า rename ทีหลังอาจทำให้แอป Crash ได้เพราะเมื่อเรา rename ใน code ส่วนของ Storyboard จะยังใช้ชื่อเดิมอยู่ โดยวิธีที่ถูกต้องคือการคลิ๊กขวา เลือก Refactor -> Rename
ในกรณีที่มีปัญหาเราสามารถตรวจสอบได้จากที่ Document Outline หรือ Connections Inspector
ที่ Document Outline ให้คลิ๊กขวาที่ Add New Item controller ถ้ามีปัญหาจะเจอสัญลักษณ์ Warning แก้โดยกด x เพื่อลบการเชื่อมออก
ที่ Connections Inspector ให้คลิ๊กที่ Add new item controller แล้วกดที่ Connections Inspector ถ้ามีปัญหาจะเจอสัญลักษณ์ Warning แก้โดยกด x เพื่อลบการเชื่อมออก