2016-02-18 2 views
0

Я использую UINavigationController внутри UITabBarController в моем проекте. Внутри этого UINavigationController есть UICollectionView. В поле UICollectionView, после нажатия на элемент в коллекции, должно быть выполнено шоу segue, чтобы увидеть какую-то детальную страницу, из которой вы можете перейти либо обратно, либо в другую коллекцию с применением другого фильтра данных.Segue использование неправильной анимации и кнопки возврата не отображается

Будучи новым для развития iOS, я борюсь с тем, чтобы вещи велись так, как я хочу. Несмотря на то, что в segues установлены show в раскадровке, они оживляют модальную анимацию (начиная со дна, а не справа).

Также кнопка «Назад» не отображается. Я установил для него текст в инспекторе атрибутов (я уже знаю, что они должны быть в представлении, которое «уходит»), а также добавили заголовки ко всем навигационным элементам ... до сих пор нет признаков их появления.

Вот моя Раскадровка: storyboard

Это prepareForSegue я использую:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showService" { 
     if let indexPath = self.collectionView?.indexPathsForSelectedItems() { 
      let object = serviceData[indexPath.last!.row] 
      let controller = (segue.destinationViewController as! UINavigationController).topViewController as! ServiceDetailViewController 
      controller.serviceItem = object 
      controller.callerItem = self.name 
      controller.navigationItem.leftItemsSupplementBackButton = true 
     } 
    } 
} 

Я огнь SEGUE в collectionView:didSelectItemAtIndexPath: моей точки зрения коллекции:

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    let cell = self.collectionView?.cellForItemAtIndexPath(indexPath) 
    performSegueWithIdentifier("showService", sender: cell) 
} 

ответ

1

Проблема в том, что ваш segue выполняется от ребенка контроллера навигационной системы («Другое название») до контроллера навигации . Это не то, как вы строите push/show segue в интерфейсе навигации. Вам нужно запустить от контроллера контроллера навигации до другого ребенка, т.е. к вашему контроллеру вида «Заголовок». Таким образом, если (скажем так) ваш push/show segue работает от «Another Title» до «Title», тогда, когда этот сеанс запускается, контроллер представления «Заголовок» будет помещен в стек того же навигационного контроллера как «Another Title ", и вы получите изменение названия в навигационной панели и кнопке« Назад ».

+0

Это также означает некоторые изменения в вашем коде, конечно, потому что контроллер вида назначения вашего сеанса будет отличаться. – matt

+0

Спасибо за ваш вклад! Означает ли это также, что у меня могут быть все мои взгляды «привязаны» к одному «UINavigationController»? – larscm

+0

Это означает не более того, что я сказал. – matt

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

  • Нет связанных вопросов^_^