1

尝试为 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 出现时,navigationItem.title分配给视图#3 的内容向左滑动,变为蓝色,并占据了为backBarButtonItem(后退按钮)保留的空间。

文本似乎对我的触摸有反应,但它没有返回到屏幕 #1。我必须杀死应用程序才能离开屏幕。

这似乎发生在我从 9 月 9 日开始运行 8.0 的 iPod Touch 上,但似乎从 9 月 9 日开始在我的 Xcode Simulator 上没有发生。

关于这里发生的事情有什么想法吗?这在 iOS 7 上不会发生。


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

4

1 回答 1

1

我的猜测是:因为您在更改堆栈时

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

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

您可以尝试检查的是:

  1. 将动画更改为 NO
  2. 从视图 #3 的 viewDidAppear 中的堆栈中删除视图 #2
于 2014-10-16T10:07:09.650 回答