UItableViewController และ UIViewController เป็นสองอ็อบเจ็กต์ที่แตกต่างกันของเฟรมเวิร์ก iOS UIKit ทั้งสองใช้เพื่อวัตถุประสงค์ที่แตกต่างกัน
คลาส UIViewController จัดการ ViewContoller ซึ่งรับผิดชอบการกระทำที่เกิดขึ้นภายในตัวควบคุม View นั้น คลาสนี้รับรู้ถึงการกระทำที่เกิดขึ้นบนตัวควบคุมการดู เช่น ViewDidLoad, ViewWillApper, ViewDidAppear, ViewWillDisapper, ViewDidDisapper
ในขณะที่ UITableViewController รับผิดชอบในการจัดการตาราง มันคือข้อมูล และมันคือเหตุการณ์โดยใช้ UITableViewDataSource, UITableViewDelegate
UITableViewController สอดคล้องกับ UIViewController, UITableViewDataSource และ UITableViewDelegate เพื่อใช้มุมมองตาราง
ด้านล่างนี้เป็นตัวอย่างของคลาสที่ใช้ UIViewController
class ViewController : UIViewController { @IBOutlet weak var sampleView: UIView! override func viewDidLoad() { } }
UITableViewController ยังสอดคล้องกับ UIViewController ดังนั้นจึงสามารถใช้วิธีการของ UIViewController ได้ ส่วนใหญ่จะใช้ UITableViewController หาก ViewController นั้นไม่มีเนื้อหาอื่นยกเว้นมุมมองตาราง
หาก view controller มีเนื้อหาอื่นพร้อมกับ tableView ส่วนใหญ่เราจะปรับให้เข้ากับ UIViewController และใช้โปรโตคอลของ Table View ที่เป็น UITableViewDataSource เพื่อกำหนดแหล่งข้อมูลบางส่วนให้กับตารางนั้น และ UITableViewDelegate เพื่อจัดการเหตุการณ์ในมุมมองตารางนั้นพี>
ตัวอย่างของ UIViewController ที่ใช้ UITableViewDataSource หรือ UITableViewDelegate คือ
class ViewController : UIViewController, UITableViewDataSource, UITableViewDelegate { override func viewDidLoad() { } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) −> Int { // } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) −> UITableViewCell { // } }
นอกเหนือจากข้างต้นแล้ว ยังมีคุณสมบัติอื่นๆ ของมุมมองตารางที่กล่าวถึงด้านล่าง
-
เมื่อมุมมองตารางกำลังจะปรากฏขึ้น จะรีโหลดข้อมูล
-
มุมมองตารางจะล้างการเลือกโดยค่าเริ่มต้นเมื่อปรากฏขึ้น
-
เมื่อมุมมองตารางปรากฏขึ้นบนหน้าจอ ตัวแสดงการเลื่อนจะกะพริบ ทำได้ภายในเมธอด viewDidAppear()