【问题标题】:Unbalanced calls to begin/end appearance transitions for <BTSViewController: 0x865c520><BTSViewController: 0x865c520> 开始/结束外观转换的不平衡调用
【发布时间】:2013-05-01 11:27:43
【问题描述】:

当我在访问新视图后返回旧视图时遇到此错误(单击导航栏上的后退按钮)

首先:点击 searchBar 时,我正在访问一个新视图,其中包含 searchBar 代替 UINavigationBarUINavigationBar 隐藏在新视图中)..

这里是代码 sn-p,点击 searchBar 后导航到新视图...

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
{
    BTSViewController *Obj = [[BTSViewController alloc]  initWithNibName:@"BTSViewController" bundle:nil];
    [self.navigationController pushViewController:Obj animated:NO];
}

第二次:点击 searchBar 中的取消按钮,我将返回到我之前的 View & in viewWillDisappear我正在做的方法setNavigationBarHidden:NO

这里是sn-p代码,点击UISearchBar中的Cancel按钮后返回上一个View...

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

我已导航到上一个视图,但 UINavigationBar 已隐藏并在我的日志中显示 Unbalanced call error...

提前致谢!

【问题讨论】:

  • 发布您之前的视图控制器的 viewDidLoad: 方法的代码,因为在 viewDidLoad: 方法中,并非所有精美的动画都已经完成,因此您的应用程序崩溃了...

标签: iphone ios ipad uinavigationbar pushviewcontroller


【解决方案1】:

您会遇到这种类型的错误,原因有两个。

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

  2. 在您的 ViewController.mviewDidLoad: 方法中,并非所有精美的动画都已完成,因此您的应用程序崩溃了

我建议如果您在 viewDidLoad: 方法中添加一些 Fancy Animations 代码,那么只需将该类型的代码从 viewDidLoad: 替换为 viewDidAppear: 并同时维护您的 viewControllers 的队列..

希望这个回答对你有帮助...

【讨论】:

  • 我没有同时推送 2 个视图,我也没有在课堂上使用任何动画..
  • 我不是说你一次推送两个类,但这里推送两次我有这种类型的问题发生在 6 个月之前,当用户在文本字段中输入文本并单击返回时我推送视图控制器当时的关键是在我解决了这个答案stackoverflow.com/questions/9088465/…
  • 您也可以查看我在 1 小时前搜索的内容 stackoverflow.com/questions/6809593/… 我希望它对您有所帮助.. :)
猜你喜欢
  • 2016-01-30
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 2016-05-28
相关资源
最近更新 更多