导航后损坏的导航栏
Corrupted navigation bar after navigating
这是目前的情况:
UITabBarController
UINavigationController
UIPageViewController
Some UIViewControllers (the actual content)
所以UIPageViewController包含一些UIViewControllers,它们都包含一个UITableView。
当我单击 UITableView 中的其中一行时,UIViewController 调用 didSelect 方法。该方法如下所示:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
let activity = self.activities[indexPath.row - 1]
self.delegate?.dayTableViewSelectedActivity(activity, sender: self)
}
那么UIPageViewController 已经实现了协议,因此正在调用委托方法。该方法如下所示:
func dayTableViewSelectedActivity(activity: Activity, sender: DayTableViewController) {
self.performSegueWithIdentifier("openDetails", sender: activity)
}
App 然后导航(推送)到 DetailViewController。当我向后滑动(默认 iOS 行为)时,DetailViewController 立即弹出到 UIPageViewController,没有动画。然后我的导航栏坏了,并且包含一个不属于那里的后退按钮,因为我不能再返回了。
当我再次单击一个单元格时,控制台会给我一条 nested push animation can result in corrupted navigation bar
消息。我从那里采取的每项行动都会给我更多的控制台错误,例如:
nested pop animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
这个错误让我沮丧了好几个小时,我不知道自己做错了什么。没有双重转场。我检查了很多次。希望大家帮帮我。
您需要确保在导航回 PageViewController 时使用 Unwind Segue。这会将 TableViewController 从堆栈顶部弹出,然后 return 您将转到 PageViewController。这是一篇关于如何在 Swift"
中使用它的不错的文章
https://www.andrewcbancroft.com/2015/12/18/working-with-unwind-segues-programmatically-in-swift/
经过几个小时的努力,我在这里找到了答案:
我的 UITTabBarController 确实有一个子类,它覆盖了 viewDidAppear
方法。我添加了 super.viewDidAppear
,现在一切正常。
这是目前的情况:
UITabBarController
UINavigationController
UIPageViewController
Some UIViewControllers (the actual content)
所以UIPageViewController包含一些UIViewControllers,它们都包含一个UITableView。
当我单击 UITableView 中的其中一行时,UIViewController 调用 didSelect 方法。该方法如下所示:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
let activity = self.activities[indexPath.row - 1]
self.delegate?.dayTableViewSelectedActivity(activity, sender: self)
}
那么UIPageViewController 已经实现了协议,因此正在调用委托方法。该方法如下所示:
func dayTableViewSelectedActivity(activity: Activity, sender: DayTableViewController) {
self.performSegueWithIdentifier("openDetails", sender: activity)
}
App 然后导航(推送)到 DetailViewController。当我向后滑动(默认 iOS 行为)时,DetailViewController 立即弹出到 UIPageViewController,没有动画。然后我的导航栏坏了,并且包含一个不属于那里的后退按钮,因为我不能再返回了。
当我再次单击一个单元格时,控制台会给我一条 nested push animation can result in corrupted navigation bar
消息。我从那里采取的每项行动都会给我更多的控制台错误,例如:
nested pop animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
这个错误让我沮丧了好几个小时,我不知道自己做错了什么。没有双重转场。我检查了很多次。希望大家帮帮我。
您需要确保在导航回 PageViewController 时使用 Unwind Segue。这会将 TableViewController 从堆栈顶部弹出,然后 return 您将转到 PageViewController。这是一篇关于如何在 Swift"
中使用它的不错的文章https://www.andrewcbancroft.com/2015/12/18/working-with-unwind-segues-programmatically-in-swift/
经过几个小时的努力,我在这里找到了答案:
我的 UITTabBarController 确实有一个子类,它覆盖了 viewDidAppear
方法。我添加了 super.viewDidAppear
,现在一切正常。