2016-06-07 3 views
2

Это текущая ситуация:Поврежденной панели навигации после навигации

UITabBarController 
    UINavigationController 
     UIPageViewController 
      Some UIViewControllers (the actual content) 

Так UIPageViewController содержат некоторые UIViewControllers, которые все содержат в UITableView.

This is what the Apps looks like

Когда я нажимаю один из строк в 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) 
} 

Приложение затем осуществляет навигацию (толкает) к DetailViewController. Когда я откидываюсь назад (поведение по умолчанию iOS), DetailViewController мгновенно появляется в UIPageViewController без анимации. Тогда моя панель навигации сломана и содержит кнопку возврата, которая там не принадлежит, потому что я не могу вернуться назад.

Broken navigation bar

Когда я нажимаю ячейку снова консоль дает мне 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. 

Эта ошибка расстраивает меня в течение нескольких часов, и я не могу понять, что я делаю неправильно. Нет двойных переходов. Я проверил его несколько раз. Надеюсь, вы, ребята, можете мне помочь.

ответ

1

Вы должны будете убедиться, что при переходе на страницуПросмотрПросмотра вы используете Unwind Segue. Это выведет TableViewController с верхней части стека и вернет вас в PageViewController. Вот приличная статья о том, как использовать его в Swift»

https://www.andrewcbancroft.com/2015/12/18/working-with-unwind-segues-programmatically-in-swift/

+0

Спасибо! Я постараюсь это, когда я вернусь домой. Я буду держать вас в курсе. –

+0

к сожалению, это не сработало. В учебнике они делают разворачивать программно. Но я t нужно поведение по умолчанию iOS (что, когда вы прокручиваете прямо в UINavigationController, вы переходите к предыдущему контроллеру представления) ... Поэтому, когда я прокручиваю прямо в моем DetailViewController, я хочу вернуться в UIPageViewController. –

Смежные вопросы