Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

UITableViewController และ UIViewController แตกต่างกันอย่างไร


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()