Tôi đang viết bộ điều khiển chế độ xem để thêm mục mới vào ứng dụng của mình. Nó hoàn toàn phù hợp cho MonoTouch.Dialog, vì nó có thể được thực hiện dễ dàng với một giao diện dựa trên bảng, với một trường cho mỗi thuộc tính có liên quan của mục của tôi.Làm cách nào để đóng gói một chế độ xem MonoTouch.Dialog thành bộ điều khiển chế độ xem?
Đây là mã Tôi hiện có cho thấy quan điểm add item (giản thể, nhưng ý tưởng cốt lõi vẫn là):
Item item = new Item();
TapHandler handler = new TapHandler();
BindingContext bc = new BindingContext(handler, item, "Add Item");
DialogViewController dv = new DialogViewController(bc.Root, true);
this.NavigationController.PushViewController(dv, true);
Trong khi làm việc, tôi muốn nếu tôi có thể tóm lược các chi tiết của view vào bộ điều khiển chế độ xem của riêng nó, vì vậy mã có thể trông giống như sau:
UIViewController controller = new AddItemViewController();
this.NavigationController.PushViewController(controller, true);
Tuy nhiên, tôi không thể tìm ra cách thực hiện điều này. Tôi nghĩ điều hợp lý cần làm là tạo một lớp con của DialogViewController
. Tuy nhiên, tất cả các nhà thầu của DialogViewController
đều yêu cầu RootElement
. Để làm được điều đó, trước hết bạn cần tạo BindingContext
. Vì bạn không thể chạy bất kỳ mã nào trước khi gọi hàm tạo cơ sở, nó không hoạt động.
tiếp cận thứ hai của tôi là thực hiện phân lớp của UIViewController
, tạo DialogViewController
, và thêm bộ điều khiển xem hộp thoại như một đứa trẻ của lớp con của tôi sử dụng this.AddChildViewController(dv)
và this.View.AddSubView(dv.View)
. Trong khi điều này làm việc ban đầu, nếu bạn có bộ điều khiển xem mới trong một UINavigationController, và bạn bấm vào một phần tử ngày, thì khung nhìn ngày xuất hiện dưới dạng một cửa sổ bật lên phương thức thay vì trong hệ thống phân cấp điều khiển điều hướng. (Điều này có ý nghĩa, vì DialogViewController
không phải là một phần của phân cấp NavigationController
trong thiết kế này).
Từ đó tôi bị kẹt. Tôi không thể tìm thấy bất kỳ ví dụ về việc sử dụng MonoTouch.Dialog như thế này trong các ví dụ. Đây có phải là có thể làm gì? Hoặc nếu nó không phải là, có một lý do tốt là tại sao viết mã như thế này là một ý tưởng tồi?
Cảm ơn, tôi đã không nghĩ đến việc sử dụng phần tử Gốc theo cách thủ công trong hàm tạo. Tôi đã thực hiện câu trả lời của riêng tôi mà làm việc với các api phản ánh bằng cách thiết lập một phần tử gốc mới trong constructor. –