2011-07-01 29 views
7

Tôi đang bị mất một chút cố gắng sử dụng cả UITabBarController và UINavigationController trong MonoTouch.Monotouch UITabBarController + UINavigationController

Tôi có thể tạo dự án dựa trên điều hướng và điều hướng chỉ sử dụng điều hướngController, tốt. Hoặc tôi có thể thêm một tabBarController và điều hướng đến một vài màn hình chính, tốt.

Tuy nhiên, tôi dường như không thể điều hướng đến người khác mà không sử dụng TabBarController nếu có. Ví dụ: tôi đang làm một ứng dụng đề cập đến "foo", vì vậy tôi là hai chế độ xem trên thanh tabbar, FooHome và FooSettings của tôi. Làm cách nào để điều hướng đến chế độ xem mới nếu người dùng nhấp vào nội dung nào đó như "Thêm Foo" trên chế độ xem FooSettings.

NavigationController.PushToView dường như không có bất kỳ hiệu ứng nào và tôi không muốn thêm chế độ xem vào tabController vì nó đẹp và đơn giản chỉ với hai mục.

Tôi có nên sử dụng tính năng này.View.AddSubView không? Ý tưởng loại âm thanh như một hộp thoại, tôi chỉ không chắc chắn làm thế nào để làm điều đó với monoTouch ...

Trả lời

3

Thêm bộ điều khiển FooHome và FooSettings của bạn vào UINavigationControllers và đặt các bộ điều khiển điều hướng đó vào bộ điều khiển tab của bạn. Ví dụ, tab đầu tiên sẽ chứa một bộ điều khiển điều hướng có bộ điều khiển gốc là FooHome và tab thứ hai sẽ chứa một bộ điều khiển điều hướng có bộ điều khiển gốc là FooSettings.

Khi bạn nhấn vào Thêm Foo trong FooSettings, bạn sẽ đẩy bộ điều khiển mới bên trong tab thứ hai.

+0

cảm ơn bạn. chính xác những gì tôi đã sau. – Kye

14

Tôi đã vật lộn với điều này trong nhiều giờ và bài đăng này đã giúp. Cảm ơn bạn rất nhiều. Đối với những người vẫn còn trong bóng tối một chút, đây là mã của tôi:

public override bool FinishedLaunching (UIApplication app, NSDictionary options) 
    { 
     // create a new window instance based on the screen size 
     window = new UIWindow (UIScreen.MainScreen.Bounds); 

     var vc1 = new VideosVC(); 
     var vc2 = new ScheduleVC(); 
     var vc3 = new TheCastVC(); 
     var vc4 = new MerchandiseVC(); 

     UINavigationController uinc1 = new UINavigationController(vc1); 
     UINavigationController uinc2 = new UINavigationController(vc2); 
     UINavigationController uinc3 = new UINavigationController(vc3); 
     UINavigationController uinc4 = new UINavigationController(vc4); 

     tabBarController = new UITabBarController(); 

     tabBarController.ViewControllers = new UIViewController [] { 
      uinc1, 
      uinc2, 
      uinc3, 
      uinc4, 
     }; 

     window.RootViewController = tabBarController; 

     window.MakeKeyAndVisible(); 

     return true; 
    } 
+2

+1 để viết giải pháp mã của bạn cho tất cả những người khác đến cùng! – scraimer

+0

Thật vậy, cảm ơn bạn đã đăng mã của mình. Tôi đã chạy vào cùng một vấn đề và mã của bạn ở trên thực tế là plug-n-play cho tôi. –

0

Một cách tiếp cận khác là sử dụng bảng phân cảnh để tạo màn hình. Rất dễ sử dụng UITabBarController với UINavigationController. Bạn chỉ cần tạo ra sự phân biệt giữa chúng. Những gì đã đưa bạn giờ có thể đã được thực hiện trong vài giây. Ngoài ra, bằng cách sử dụng bảng phân cảnh, bạn có thể sắp xếp lại một cách nhanh chóng các tab & mà không cần viết mã; làm cho nó dễ bảo trì hơn nhiều.

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