2012-02-02 25 views
7

Trong lập trình iOS 4 bởi Matt Newburg, ông tuyên bố: "Để cung cấp UIViewController với chế độ xem theo cách thủ công, hãy triển khai phương thức loadView ... Bạn KHÔNG được gọi siêu".Nên [super loadView] được gọi từ loadView hay không?

Trong sách hướng dẫn dành cho nhà phát triển iOS 5 của Erica Sadun, tiểu bang: "Phương pháp loadView cho phép bạn thiết lập màn hình và bố cục bất kỳ phần phụ nào .... Đảm bảo gọi [super loadView] bất cứ khi nào bạn kế thừa từ chuyên ngành lớp con như UITableViewController hoặc UITabBarController. "

Điều này, với tôi ít nhất, là khó hiểu.

Trả lời

4

Apple là nguồn gốc của sự thật và họ nói KHÔNG có cuộc gọi siêu.

Nếu bạn ghi đè phương pháp này để tạo ra quan điểm của bạn bằng tay, bạn nên làm như vậy và gán quan điểm gốc của hệ thống cấp bậc của bạn đến tài sản xem. (Các khung nhìn bạn tạo nên là các cá thể duy nhất và không nên chia sẻ với bất kỳ đối tượng bộ điều khiển chế độ xem nào khác.) triển khai tùy chỉnh của phương pháp này không được gọi là siêu.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

[sửa]

Một lưu ý quan trọng nằm rải rác xung quanh trong lớp tham khảo UIViewController:

Phương pháp loadView mặc định cố gắng để tải nhìn từ ngòi tập tin liên quan với bộ điều khiển xem (nếu có).

+0

Rất tiếc. Vì lý do nào đó, tôi nghĩ họ không nói cụ thể. –

+0

Tôi có một câu hỏi ngắn về điều này. Tôi đã AppDelegate và đặt rootView của nó thành một cá thể lớp UIViewController khác (nơi tôi sửa đổi khung nhìn trong loadView). Nếu tôi không gọi [super loadView] thì phương thức này được gọi là ba lần. Nếu tôi gọi nó, mọi thứ đều hoàn hảo. Vì vậy, tôi đã bỏ lỡ một cái gì đó trong tài liệu của Apple? Nếu tôi không được phép thực hiện [super loadView], tôi nên thiết lập chế độ xem nếu tôi không tải chế độ xem từ ngòi bút? – andi1984

+0

Nếu tôi đặt UINavigationController là rootViewController thành ứng dụng ủy nhiệm và đẩy UIViewController vào ngăn xếp navcontroller, mọi thứ đều hoàn hảo. Vì vậy, tôi không hiểu tại sao những khác biệt này lại xảy ra. – andi1984

Các vấn đề liên quan