2013-04-28 21 views
5

Trong mục tiêu-C, các đại biểu như UITableViewControllerDelegate là các giao thức, vì vậy tôi có thể thực hiện nhiều trong một lớp.Làm cách nào để triển khai nhiều đại biểu trong Monotouch?

Trong Monotouch, tất cả đại biểu iOS được hiển thị dưới dạng lớp C#. Điều này làm cho nó không thể thực hiện hai đại biểu trên một lớp điều khiển duy nhất, vì C# (đúng, IMO) chỉ cho phép thừa kế đơn.

Các khai báo đại biểu có tồn tại dưới dạng giao diện C# ở đâu đó trong khung Monotouch không? (Điều này sẽ là gần nhất chúng ta có thể đến giao thức từ Mục tiêu-C)

Tôi có những lựa chọn gì nếu tôi cần triển khai nhiều đại biểu trên một lớp trong Monotouch/C#?

Trả lời

5

Bạn có thể sử dụng WeakDelegate để thực hiện việc này, nhưng bạn phải có tất cả các trang trí Export chính xác. Tài liệu về các đại biểu yếu gần dưới cùng here. Here là ví dụ về UITableViewSource với các đại biểu yếu.

Tôi không chắc chắn lý do tại sao Xamarin phải sử dụng các lớp thay vì giao diện cho giao thức Obj-C, nhưng tôi đoán đó là một hạn chế mà họ phải giải quyết.

+0

Các lớp lý do được sử dụng thay vì giao diện là các giao thức Obj-C có thể có các phương thức tùy chọn. Giao diện được quản lý không thể. –

+0

Điều đó có ý nghĩa ... Sẽ rất tuyệt nếu có một tập các hằng số chuỗi công khai cho tất cả các bộ chọn được sử dụng trong MonoTouch để trợ giúp điều này - các chuỗi đó đều ở trong đó rồi, không được phơi ra. – jonathanpeppers

+0

@jonathanpeppers http://tirania.org/tmp/rosetta.html – dalexsoto