ตอนนี้เราเพิ่ม todo item ได้ละ แต่เพิ่มเป็น Test หมดเลย ต่อไปเราจะใช้ค่าที่ผู้ใช้กรอกเข้ามาจริง ๆ ละ
เริ่มจากการผูก Outlet เพื่ออ่านค่า property ของ view ทั้งสองอันคือ TextField และ Switch
วิธีการแบบเดียวกันกับตอนที่เราผูก Action เลยเพียงแต่ตอนนี้ให้เลือกเป็น Outlet และตั้งชื่อว่า titleTextField กับ isDoneSwitch
@IBOutlet weak var titleTextField: UITextField!
@IBOutlet weak var isDoneSwitch: UISwitch!
@IBAction func doneButtonDidTap(_ sender: UIBarButtonItem) {
if let title = titleTextField.text, !title.isEmpty {
let todoItem = TodoItem(title: title, isDone: isDoneSwitch.isOn)
delegate?.addNewItemViewController(controller: self, didAdd: todoItem)
}
}
เพื่อให้ผู้ใช้สะดวกขึ้น เรามาให้โฟกัสเปิดแป้นพิมพ์อัตโนมัติหลังจากเข้าหน้า ผู้ใช้จะได้ไม่ต้องมาแตะที่ช่องอีกรอบ โดยการเพิ่ม titleTextField.becomeFirstResponder() หลังจากที่หน้าจอแสดงเสร็จแล้ว
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
titleTextField.becomeFirstResponder()
}
AddNewItemViewController.swift
import UIKit
protocol AddNewItemViewControllerDelegate: class {
func addNewItemViewController(controller: AddNewItemViewController, didAdd item: TodoItem)
func addNewItemViewControllerDidCancel(controller: AddNewItemViewController)
}
class AddNewItemViewController: UIViewController {
weak var delegate: AddNewItemViewControllerDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBOutlet weak var titleTextField: UITextField!
@IBOutlet weak var isDoneSwitch: UISwitch!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
titleTextField.becomeFirstResponder()
}
@IBAction func doneButtonDidTap(_ sender: UIBarButtonItem) {
if let title = titleTextField.text, !title.isEmpty {
let todoItem = TodoItem(title: title, isDone: isDoneSwitch.isOn)
delegate?.addNewItemViewController(controller: self, didAdd: todoItem)
}
}
@IBAction func cancelButtonDidTap(_ sender: UIBarButtonItem) {
delegate?.addNewItemViewControllerDidCancel(controller: self)
}
}