Objective-c 如何正确管理多个视图和控制器
Posted
技术标签:
【中文标题】Objective-c 如何正确管理多个视图和控制器【英文标题】:Objective-c How properly mange multiple views and controllers 【发布时间】:2011-05-14 20:13:43 【问题描述】:我有一个应用程序,最初有一个 TabBarController,每个选项卡都是一个 ViewController,每个选项卡都有一个调用其他控制器的按钮。
那么我应该如何构建它?有一个主要的 rootviewController(如果有,如何?)?还是在 appdelegate 中只调用 tabBarController 并且在每个选项卡内的 viewControllers 中调用其他控制器?
让我可以灵活地前进、后退和转换视图的最佳方式是什么?
不知道我有没有说清楚……
谢谢大家。
【问题讨论】:
【参考方案1】:通常,您将从名为“Tab Bar Application”的模板开始,从 Xcode 4 开始,首先加载 MainWindow Nib,它包含一个选项卡栏,并且选项卡栏在 IB 中设置为具有 2 个视图控制器,称为“ FirstViewController”和“SecondViewController”...
如果它适合您,您可以遵循该模式,否则您可能希望从基于视图的应用程序开始并添加您自己的标签栏。我个人觉得通过UITabBarDelegate
控制标签栏更容易,特别是如果你打算做一些稍微深奥的事情。
编辑:
如果您计划加载导航控制器堆栈或单个模式视图,则基本上是两种方法之一。
1)
ThirdViewController * controller = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];
UINavigationController * myNavigationController = [[UINavigationController alloc] initWithRootViewController:controller];
[self presentModalViewController:myNavigationController animated:YES];
[controller release];
[myNavigationController release];
2)
ThirdViewController * controller = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];
[self presentModalViewController:controller animated:YES];
[controller release];
通过在调用当前模式的视图控制器上调用以下命令返回 Tab 环境。
[自己 dismissModalViewControllerAnimated:YES];
【讨论】:
如果你必须从第一个或第二个视图控制器转换到另一个控制器,你会在哪里调用它?在 rootTabBarController 中? 您以编程方式希望根据某事从一个切换到两个...比如说按下按钮?设置 selectedViewController 属性。 但是例如,假设我有一个 TabBarController,有名为 AViewController、BViewcontroller 和 CViewController 的选项卡。例如,如果我想当我触摸 AViewController 中的按钮以显示另一个视图时,最好的方法是什么?在 AViewController 中调用视图或将选择器发送到根 TabBarController 并在那里调用它?顺便说一句,我读到我不应该继承 UITabBarController,我打算怎么做?以上是关于Objective-c 如何正确管理多个视图和控制器的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iPhone / iPad 的应用程序中正确使用保留和释放
如何在 Objective-C 中管理、跟踪或同步多个服务器的异步请求?