【发布时间】:2014-05-07 02:38:36
【问题描述】:
我是 Objective-C 的新手,我正在寻找一些关于如何管理多个视图控制器的建议。
我查看了 Apple 关于其内置容器视图控制器类的文档,但它们似乎都不是我想要的——最接近的是 NavigationController,但即使这样似乎也有点偏离。
我想实现一系列 ViewController——它们使用 xib 作为其接口——根据一系列规则从一个过渡到下一个。例如,在应用程序加载时,我们会查看本地存储中是否有 userId - 如果没有,则显示注册屏幕。接下来,有一个(比如说)叫出租车的按钮——如果单击该按钮,则显示确认屏幕。
可选题外话:我认为这不适合导航控制器的原因是流程看起来不是分层的,而是一种分支和线性的。一个具体的例子是我不需要导航栏来返回,这似乎是导航控制器的标准配置。但我对 NavigationController 的了解还不够,无法确定它是否适合这个用例。
我一直在用各种方法破解它。例如,在 IBAction 处理程序中,我一直在使用此代码转换到新的视图控制器:
UIViewController *view = [[UIViewController alloc] initWithNibName:@"CCWConfirmViewController" bundle:nil];
view.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:view animated:YES completion:nil];
此外,在我的窗口的“根”视图控制器(我设置为 SignupViewController)initWithNibName 中,我返回的视图控制器与请求的视图控制器不同,具体取决于我之前提到的本地存储调用的结果:
if (currentUser.userId) {
// Instead of returning the SignupViewController, like was asked,
// return the MainViewController, since signup isn't needed for existing
// users.
CCWMainViewController *mvc = [[CCWMainViewController alloc] init];
return mvc;
我似乎必须做错事(第二次 hack 构建但会生成警告,因为我返回了一个指向错误类型的指针)。有人知道更好的方法吗? NavigationController 到底适合我吗,我只是误解了它的用途?我是否只需要实现一个自定义容器来充当我的 RootViewController 并管理这些其他 ViewController?
【问题讨论】:
标签: objective-c cocoa-touch viewcontroller