我遇到了SplitViewController应用程序的问题。当我从主视图中的表中选择一行时,我正在用替换segue替换详细视图。问题是每次发生这种情况时都会创建一个新实例/重新加载详细视图控制器。我有什么方法可以拥有它,所以如果它已经被实例化,它将用前一个实例替换详细视图。我希望记住详细视图的状态,例如输入到文本字段中。
答案 0 :(得分:2)
无法完成。 segue将始终实例化视图控制器
答案 1 :(得分:1)
我使用替换segue,但在MasterVC中我实现了
-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
if ([identifier isEqualToString:@"showCalculatorViewController"]) {
if (self.splitViewController) {
NSObject *currentDetail = [self.splitViewController.viewControllers lastObject];
if ([currentDetail isKindOfClass:[RootCalcViewController class]]) {
....
然后我填写现有VC的新属性,并返回NO。
但我没有UINAvigationController作为我的初始Detail View Controller,因为我处理了masterVCs的导航。
另外,在AppDelegate中,didFinishLaunchingWithOptions需要设置VC的正确细节。生成的代码假定它是UINavigationController。同样在生成的MasterViewController中,viewDidLoad。如果您替换详细信息UINAvigationController,这将为您节省一些应用程序崩溃。
当我加载不同的视图控制器时,我让“替换segues”替换它们。
答案 2 :(得分:0)
或者 - 你可以让你的DetailController实现Singleton模式,并将对+ new,+ alloc等的任何调用转发给你的单例方法。