2011-10-28 26 views
6

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?

+0

Tôi thích các loại câu hỏi này. – Morkrom

Trả lời

5

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.

2

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.

0

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ỉ.

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