Muốn hỏi ý kiến của mọi người về vấn đề này. Tôi có một lớp con uiimageview và trong bộ khởi tạo của nó, tôi thêm một số công cụ nhận dạng cử chỉ vào imageview và tôi cũng bao gồm các phương thức ủy nhiệm nhận dạng cử chỉ trong lớp. Câu hỏi của tôi là, điều này vi phạm bộ điều khiển xem mô hình? Tất cả các mã có liên quan đến việc điều khiển một khung nhìn đều nằm trong bộ điều khiển xem không? Tương tự với nói, đặt một phương pháp hành động nút trong một lần xem. Nhưng dù sao, cũng thích nghe ý kiến.Gắn trình nhận dạng cử chỉ/phương thức hành động vào chế độ xem vi phạm bộ điều khiển chế độ xem mô hình?
Trả lời
Theo một nghĩa nào đó, vâng, điều này vi phạm mẫu MVC. Như bạn nói, khung nhìn không nên liên quan đến cách kiểm soát nó, đó là thói quen tốt hơn để nhóm mã như vậy vào một phần khác của ứng dụng.
Hơn nữa, một trong những lợi thế lớn của OOP là khả năng sử dụng lại các lớp học. Các lượt xem như vậy có thể được tái sử dụng mà không có bất kỳ vấn đề nào, vì tất cả các mã kiểm soát - cụ thể đối với ứng dụng - không nằm trong chúng. Nếu bạn bao gồm các phương thức ủy nhiệm trong chế độ xem của mình, bạn sẽ không thể sử dụng lại nó, hoặc bạn sẽ phải thay đổi phương thức ủy nhiệm mỗi lần!
Nhưng các quy tắc dành cho trường hợp chung. Hãy xem xét khung công tác Cocoa cho Mac OS X: Bạn đã có các ràng buộc cacao cho phép bạn trực tiếp thay đổi nội dung khung nhìn để đáp ứng với thay đổi dữ liệu trong mô hình của bạn. Điều đó cũng vi phạm mẫu MVC theo một cách nào đó.
Một ví dụ khác, xem UIViewController. Nó phải là một bộ điều khiển nhưng nó gắn liền với quan điểm rằng câu hỏi vẫn tồn tại. Sự tách biệt giữa bộ điều khiển xem & không rõ ràng như MVC sẽ thích nó.
Để kết luận, tôi có thể nói rằng bạn nên theo dõi mô hình (miễn là chúng phù hợp với nhu cầu của bạn) và cách bạn có thể theo dõi nó bằng một khung nhất định. Nhưng có một số trường hợp, nếu bạn làm cho nó rõ ràng, nơi nó có thể là thú vị để tạo ra một số phím tắt và phá vỡ các quy tắc.
Có vẻ như một ý tưởng hoàn hảo, nếu hành động sẽ chỉ ảnh hưởng đến giao diện của chế độ xem. Ví dụ: gắn trình nhận dạng cử chỉ di chuyển vào chế độ xem để kéo nó xung quanh có vẻ như là một ý tưởng hay.
Tuy nhiên nếu nó sẽ kích hoạt nhiều hiệu ứng khác nhau trong ứng dụng của bạn, đó có thể không phải là cách tiếp cận phù hợp.
Từ các nhà phát triển của Apple Năng lực cốt lõi doc (https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html):
Một đối tượng xem là một đối tượng trong một ứng dụng mà người dùng có thể nhìn thấy. Đối tượng xem biết cách vẽ chính nó và có thể phản hồi hành động của người dùng.
Cá nhân tôi sẽ giải thích điều này có nghĩa là OK để viết trình nhận dạng cử chỉ trong lớp xem, miễn là cử chỉ cho phép xem "phản hồi hành động của người dùng".
Ngoài ra còn có một số tiền lệ trong API Apple tôi nghĩ - vì một số con cháu UIView (UIButton chẳng hạn) có thể nhận ra cử chỉ.
- 1. MVC: Trình điều khiển chế độ xem mô hình - Chế độ xem có gọi là Mô hình không?
- 2. Thêm chế độ xem của trình điều khiển chế độ xem con vào chế độ xem phụ của bộ điều khiển chế độ xem cha mẹ
- 3. Bộ điều khiển xem đẩy vào chế độ xem giao diện chế độ xem
- 4. Trình xem chế độ xem mô hình, cách chuyển đối tượng giữa chế độ xem?
- 5. Trình xem chế độ xem mô hình là gì?
- 6. Bộ điều khiển chế độ xem sẽ không bắt đầu ở chế độ ngang
- 7. Cách bật từ một bộ điều khiển chế độ xem sang một bộ điều khiển chế độ xem khác
- 8. Mô hình chế độ xem chung?
- 9. Ajax.ActionLink đăng toàn bộ mô hình từ chế độ xem?
- 10. Cách đính kèm Chế độ xem hiện tại vào hành động của bộ điều khiển?
- 11. Chế độ xem trang phân trang với bộ điều khiển chế độ xem trẻ em
- 12. Sự khác nhau giữa Chế độ xem và Trình điều khiển chế độ xem là gì?
- 13. Loại bỏ hai bộ điều khiển chế độ xem
- 14. Hiển thị chế độ xem của bộ điều khiển khác
- 15. gọi phương thức trong mô hình từ chế độ xem
- 16. MVC3 Hai hành động điều khiển có thể trả về một chế độ xem không?
- 17. iOS 6 Xoay: Đẩy Trình điều khiển Chế độ xem
- 18. Trình điều khiển chế độ xem hiện tại từ AppDelegate?
- 19. nhận dữ liệu mô hình cho chế độ xem backbone.js
- 20. Nhận tên lớp của bộ điều khiển chế độ xem dưới dạng chuỗi
- 21. chuyển đổi chế độ xem của hai chế độ xem trong hình động khối lập phương
- 22. Đẩy một bộ điều khiển xem khác vào chế độ xem UITabBarController
- 23. vấn đề cử chỉ với chế độ xem bản đồ trong trang chế độ xem
- 24. Đi từ Bộ điều khiển đến Chế độ xem
- 25. (UIView *) hitTest trong bộ điều khiển chế độ xem?
- 26. Làm cách nào để đóng gói một chế độ xem MonoTouch.Dialog thành bộ điều khiển chế độ xem?
- 27. Chuyển biến giữa các trình điều khiển chế độ xem
- 28. Trình bày chế độ xem phương thức khác từ UIImagePickerController
- 29. thêm uiview dưới dạng chế độ xem phụ vào chế độ xem chính
- 30. MVC: các mô hình tương tác với chế độ xem?
Tôi thích các loại câu hỏi này. – Morkrom