0

我对 UINavigationControllers 有疑问。我不知道如何表达我想要做的事情,所以我只是试一试。:) 我有一个工作 UINavigationController 层次结构。它工作正常。

然而,我有一种情况,“推送”的 ViewController 类本身不显示任何内容,而是确定将推送“转发”到哪个子 ViewController。

MasterVC -> DeciderVC -> forwards to fooVC
or                    -> forwards to barVC

我想基本上将[self.navigationController pushViewController:DeciderVC animated:NO]使用逻辑重定向到[self.navigationController pushViewController:fooVC animated:NO]或者barVC

我可以将它硬编码到 MasterVC 中,但关键是我想在不同的场景中重用 DeciderVC,同时保持 MasterVC、fooVC 和 barVC 不变。我如何最好地做到这一点?

谢谢

编辑: 对工作流程的一个小说明: MasterVC显示一些可能的功能集。如果用户选择函数集 A,然后DeciderObjectA被调用并依次推送fooVC、记录数据,然后推送barVC、收集数据,然后barVC再次推送并收集数据。然后DeciderObjectA处理该数据。如果用户选择函数集 B,DeciderObjectB则被调用并依次推送barVCfooVC然后再处理数据。DeciderObjects 对在和中
声明的相同委托方法的响应不同。 @protocolfooVCbarVC

4

2 回答 2

0

可以DeciderVC简单地将所有内容转发到fooorbar吗?您不能简单地实例化适当的viewDidLoadforDecider并将其分配给view'Decider的视图吗?

例如

Decider.m
- (void) viewDidLoad:(BOOL)animated {
...
UIViewController *fooVC = [[FooVC alloc] init];
[self.view addSubview:fooVC.view];
...
}
于 2012-11-05T17:09:27.713 回答
0

如果您的 DeciderViewController 没有显示任何内容,为什么它必须是UIViewController? 在我看来,一个简单NSObject的检查策略并决定接下来要推动哪个控制器就足够了。用您的话来说,您在 MasterVC 中有决定推送哪一个的代码。(我不明白UIViewController中间有什么好处。如果我遗漏了什么,请详细说明。)

MasterVC -> fooVC 
MasterVC -> barVC
于 2012-11-05T19:00:17.057 回答