<BTSViewController: 0x865c520>的开始/结束外观转换调用不平衡。

3
我在回到旧视图后(导航栏上的返回按钮被点击)遇到了这个错误。
首先,当我点击搜索栏时,我会访问一个新的视图,该视图中包含搜索栏,而不是导航栏(在新的视图中隐藏了导航栏)。
以下是导航到新视图的代码片段...
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
{
    BTSViewController *Obj = [[BTSViewController alloc]  initWithNibName:@"BTSViewController" bundle:nil];
    [self.navigationController pushViewController:Obj animated:NO];
}

第二点:在搜索栏的取消按钮上单击后,我将返回到之前的视图,并在viewWillDisappear方法中执行setNavigationBarHidden:NO操作。

下面是代码片段,它会在点击UISearchBar的取消按钮后返回到之前的视图...

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    [self.navigationController popViewControllerAnimated:NO];
}

我被导航到之前的视图,但是UINavigationBar被隐藏了,在我的日志中显示Unbalanced call error...

提前致谢!


请发布您之前的视图控制器的 viewDidLoad: 方法的代码,因为在 viewDidLoad: 方法中,并不是所有的花哨动画都已经完成,所以您的应用程序崩溃了... - Paras Joshi
1个回答

1

在这里出现这种错误有两个原因。

  1. 如果您同时推送了多个UIViewController

  2. 在您的ViewController.mviewDidLoad:方法中,不是所有花哨的动画都已经完成,因此您的应用程序崩溃了。

我建议如果您在viewDidLoad:方法中添加了一些花哨的动画代码,则只需将该类型的代码从viewDidLoad:替换为viewDidAppear:,并且还要维护您的视图控制器队列。

希望这个答案对您有帮助...


我没有同时推送两个视图,也没有在我的类中使用任何动画。 - Krunal
我并不是说你一次推两个类,但在这里它推了两次。我之前遇到过这种问题,大约6个月前,在用户在文本字段中输入文本并点击返回键时,我推出了视图控制器,但此时它推了两次。后来我通过这个答案解决了这个问题:https://dev59.com/2Wox5IYBdhLWcg3wnViz - Paras Joshi
你也可以查看我在1小时前搜索的这个链接:https://dev59.com/yGw15IYBdhLWcg3wIYO_ 希望对你有所帮助.. :) - Paras Joshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接