这似乎是一个愚蠢的问题,但我似乎无法解决这个问题。
我的用户点击应用主屏幕上的图标,图标执行模态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];
}
答案 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时发生。