在奇数navigationItem / backBarButtonItem标题交换中弹出视图控制器结果

时间:2014-09-14 21:31:11

标签: uitableview ios8 uinavigationitem backbarbuttonitem

尝试更新适用于iOS 8的应用。

我有一组UITableViews,我们称之为#1视图,#2视图,以及#3。

当从视图#2传递到视图#3时,我加载视图#3然后从视图中弹出视图#2。

在视图#2中,我使用的是此代码:

// Load an instance of view #3 
ViewThree *viewController = [[ViewThree alloc] initWithNibName:@"ViewThree" bundle:nil];
UINavigationController * navigationController = self.navigationController;       

// Push view #3 to the top of the stack
[navigationController pushViewController:viewController animated:YES];

// Now pop view #2 from the stack
NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray:navigationController.viewControllers];
[navigationArray removeObjectAtIndex:1];  
navigationController.viewControllers = navigationArray;

就推送和弹出视图而言,这样可以正常工作。

我的问题是,当显示视图#3时,分配给视图#3的navigationItem.title向左滑动,变为蓝色,并接管为backBarButtonItem保留的空间(后退按钮) 。

文字似乎响应了我的触摸,但它没有返回到屏幕#1。我必须杀死该应用才能离开屏幕。

这似乎发生在我9月9日运行8.0的iPod Touch上,但从9月9日起我的Xcode模拟器上似乎没有发生。

关于这里发生了什么的任何想法?这不会发生在iOS 7上。


更新:我认为我通过删除NavBar标题已经解决了这个问题,但现在出现< Back按钮,但大约50%的时间它不起作用。用户点击按钮,按钮的箭头部分变为浅蓝色,用户卡在屏幕上。离开的唯一方法是杀死应用程序。

1 个答案:

答案 0 :(得分:1)

我的猜测是:因为你在

时改变了堆栈
// Push view #3 to the top of the stack
[navigationController pushViewController:viewController animated:YES];

正在进行(动画推送),并且UI操作不是线程安全的,最终会出现格式错误的视图堆栈。

您可以尝试检查的是:

  1. 将动画更改为否
  2. 在视图#3
  3. 的viewDidAppear中从堆栈中删除视图#2