我对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对@protocol
和fooVC
中barVC
中声明的相同委托方法的响应方式不同。
答案 0 :(得分:0)
DeciderVC
可以简单地将所有内容转发到foo
或bar
吗?您是否可以简单地在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