Đôi khi tôi muốn phân lớp UIViewController cho một số tùy chỉnh ứng dụng rộng. Ví dụ. một cái gì đó mà tất cả các bộ điều khiển xem nên thực hiện trong viewDidLoad hoặc viewWillAppear hoặc như vậy.Sự khác biệt giữa UIViewController và UITableViewController
Tự nhiên tôi phân lớp UIViewController và đi từ đó và tất cả các trình điều khiển chế độ xem được kế thừa từ đó. Nhưng một số bộ điều khiển chạy bảng. Và có UITableViewController được thiết kế cho mục đích đó.
Vì vậy, tôi phân lớp UITableViewController quá và chỉ làm những điều tương tự ở đó. Điều đó dường như không phải là điều thông minh nhất trong các điều khoản OOP. Và không có nhiều thừa kế, vv
Và như UITableViewController thừa hưởng từ UIViewController ...
Bây giờ tôi tự hỏi tại sao tôi không chỉ tạo ra bộ điều khiển xem bảng của riêng tôi được thừa kế từ bộ điều khiển xem rất riêng của tôi phân lớp và thêm tất cả các công cụ bảng. Nhưng những gì là "tất cả các công cụ bảng"?
- Có mã bộ xương mà xcode thêm vào mọi bộ điều khiển chế độ xem bảng mới. Khá tiện dụng nhưng có thể dễ dàng chuyển sang đoạn mã.
- Có khai báo giao thức UITableViewDelegate và UITableViewDataSource. Dễ dãi. Việc thực hiện các phương thức đó phải tuân theo từng phân lớp của UITableViewController.
- Có thể triển khai mặc định hợp lý tất cả các phương pháp bắt buộc đó trong giao thức. Chẳng hạn như trở về 0 cho numberOfSectionsInTableView: hoặc nil cho titleForHeaderInSection hoặc 44.0f cho heightForRowAtIndexPath: (. Ví dụ Xấu mặc dù có thể có thông minh hơn không thực hiện điều đó cả)
Vì vậy, mặc dù những thứ rõ ràng, được có bất kỳ điều kỳ diệu mà UITableViewController mất quan tâm?
Nhờ tất cả mọi người đã trả lời. Điều này giúp ích rất nhiều cho quyết định kiến trúc nhất định này. –