2012-05-13 30 views
7

Tôi đang sử dụng StoryBoards trong Monotouch và có một ViewController đã được chỉ định làm VC ban đầu. Tôi có một VC thứ hai mà tôi muốn hiển thị theo chương trình từ phương thức ViewDidLoad của VC đầu tiên. Các bước Objective-C là như vậyLàm thế nào để lập trình tải một viewController khác từ một ViewController trong MonoTouch

  1. nhanh chóng thứ hai VC qua Storyboard.InstantiateViewController("SecondVC")
  2. Đặt nó ModalTransitionalStyle
  3. Đặt đại biểu của mình để tự như secondVC.delegate = self;
  4. sử dụng this.PresentViewController(secondVC, true, nil)

Làm thế nào để hoàn thành trong mã C# MonoTouch?

VC mà tôi khởi tạo bằng phương thức Storyboard.Ins.. không có đại diện hoặc thuộc tính Đại biểu cần đặt. Và mặc dù mã của tôi biên dịch, tôi không thấy cái nhìn thứ hai. Tôi chỉ thấy đầu tiên Xem

Bất kỳ trợ giúp đánh giá cao

nhờ

+0

Bạn có thể đăng một số mã mục tiêu-c để giúp tôi hiểu câu hỏi không? – holmes

+0

Tôi đang sử dụng MonoTouch. Không có nhiều mã Obj-C. Các bước được nêu trong câu hỏi là từ tài liệu iOS về cách gọi một ViewController từ một ViewController khác. Tôi đang cố gắng sao chép các bước trong C# – rams

Trả lời

10

Bạn sẽ có thể làm được điều này nếu bạn gọi nó trên một sự chậm trễ. Tôi đã sử dụng một số Threading.Timer để gọi cho PresentViewController một giây sau khi tải. Theo như các đại biểu, một UIViewController không có tài sản đó. Bạn sẽ phải truyền đến loại bộ điều khiển được áp dụng cho bộ điều khiển bạn đang tải. Sau đó, bạn có thể thiết lập các đại biểu. Bạn có thể sẽ muốn thiết lập WeakDelegate thay vì Delegate nếu bạn muốn sử dụng (self) này.

public override void ViewDidLoad() 
{ 
    base.ViewDidLoad(); 

    Timer tm = new Timer (new TimerCallback ((state)=> { 
     this.InvokeOnMainThread (new NSAction (()=> { 
      UIStoryboard board = UIStoryboard.FromName ("MainStoryboard", null); 
      UIViewController ctrl = (UIViewController)board.InstantiateViewController ("Number2VC"); 
      ctrl.ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve; 
      this.PresentViewController (ctrl, true, null); 
     })); 
    }), null, 1000, Timeout.Infinite); 
} 
+0

Cảm ơn câu trả lời. Bạn có thể giải thích tại sao một sự chậm trễ là cần thiết ở đây? – rams

+0

mã của bạn đã hoạt động! Tôi có thể thấy Chế độ xem thứ hai như mong đợi mặc dù có một chút chậm trễ. Nhưng tôi không hiểu tại sao chúng ta cần một bộ đếm thời gian. – rams

+0

Bạn có thể giảm độ trễ xuống còn 0 mili giây, nó vẫn hoạt động. Ngoài ra, bạn có thể chuyển mã này sang ViewDidAppear. Tôi tìm thấy một bài viết liên quan khác [ở đây.] (Http://stackoverflow.com/questions/10147625/unable-to-get-presentviewcontroller-to-work) – holmes

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