“开始/结束外观转换的不平衡调用”?

时间:2013-08-06 00:41:38

标签: objective-c uiview xcode4.5 uistoryboardsegue

这似乎是一个愚蠢的问题,但我似乎无法解决这个问题。

我的用户点击应用主屏幕上的图标,图标执行模态segue,打开视图。从这里,用户可以单击另一个按钮,将其推送到详细视图。这是踢球者:一旦我的用户进入详细视图,并尝试点击另一个按钮,我就会收到错误:

“开始/结束外观转换的不平衡调用。”

我假设它是由于在原始模态上面的segues分层数量。简而言之,过程是:模态,推送,推送。在第三次推送时,控制台中出现上述“错误”。

我该如何解决这个问题?这是发生错误的segue /代码:

的.m

- (IBAction)purchasebuttonpressed:(id)sender
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_1" bundle:nil];
    StrainDetailViewController *yourViewController = (StrainDetailViewController *)[storyboard instantiateViewControllerWithIdentifier:@"DispensaryViewController"];

    [self.navigationController pushViewController:yourViewController animated:YES];



}

1 个答案:

答案 0 :(得分:1)

如果我了解你的应用程序结构,以及你想要做什么,我认为你需要改变控制器的安排:

HomeViewController (the window's root view controller)
     |
     | modal segue to:
     |
NavigationController whose root view controller is ViewController
     |
     | push to :
     |
TableViewController
     |
     | push to:
     |
DetailViewController

另一种方法,以及我喜欢的方式,如果HomeViewController就像一个启动屏幕或欢迎屏幕 - 你第一次看到它后不需要回来的东西,就是让导航控制器成为窗口的根视图控制器。在导航控制器的根视图控制器(在您的情况下为ViewController)中,从viewDidAppear方法以模态方式呈现HomeViewController而没有动画,因此它将是用户看到的第一件事。当用户想继续前进时,关闭HomeViewController,你将进入ViewController,HomeSeController将被解除分配。您需要在viewDidAppear方法中放置逻辑,以便HomeViewController的显示仅在第一次调用viewDidAppear时发生。