UINavigationController“转发”pushViewController

时间:2012-11-05 16:42:21

标签: ios ios5 uiviewcontroller uinavigationcontroller

我对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并依次推送barVC,然后按fooVC,然后处理数据。
DeciderObjects对@protocolfooVCbarVC中声明的相同委托方法的响应方式不同。

2 个答案:

答案 0 :(得分:0)

DeciderVC可以简单地将所有内容转发到foobar吗?您是否可以简单地在viewDidLoad中为Decider实例化相应的view,并将其Decider分配给Decider.m - (void) viewDidLoad:(BOOL)animated { ... UIViewController *fooVC = [[FooVC alloc] init]; [self.view addSubview:fooVC.view]; ... } 的视图?

E.g。

{{1}}

答案 1 :(得分:0)

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

MasterVC -> fooVC 
MasterVC -> barVC