我试图在MonoTouch中同时使用UITabBarController和UINavigationController,我有点失落。
我可以创建一个基于导航的项目,并且只使用一个navigationController导航,很好。或者我可以添加一个tabBarController并导航到几个主屏幕,很好。
但是,如果不存在TabBarController,我似乎无法导航到另一个。例如,我正在做一个处理“foo”的应用程序,所以我在我的tabbar,FooHome和FooSettings上有两个视图。如果用户在FooSettings视图上单击“添加Foo”之类的内容,如何导航到新视图。
NavigationController.PushToView似乎没有任何效果,我不想将视图添加到tabController,因为它很简单,只有两个项目。
我应该使用this.View.AddSubView吗?这个想法听起来像一个对话框,我只是不确定如何使用monoTouch ......
答案 0 :(得分:14)
我正在和它搏斗几个小时,这篇文章有所帮助。非常感谢。对于那些仍然在黑暗中的人,这是我的代码:
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;
}
答案 1 :(得分:3)
将您的FooHome和FooSettings控制器添加到UINavigationControllers并将这些导航控制器设置为选项卡控制器。
例如,第一个选项卡将包含一个导航控制器,其根控制器为FooHome,第二个选项卡将包含一个导向控制器,其根控制器为FooSettings。
点击FooSettings中的Add Foo时,您将在第二个标签内推送新控制器。
答案 2 :(得分:0)
另一种方法是使用故事板来创建屏幕。使用带有UINavigationController的UITabBarController非常容易。你只需要在它们之间创建segues。花了几个小时就可以在几秒钟内完成。此外,通过使用故事板,您可以非常快速地重新排列视图和标签没有编写代码;使其更易于维护。