2014-12-17 3 views
0

Обновление, см. Мой комментарий ниже, как то, что я сделал неправильно. Мысль о том, что кто-то может извлечь выгоду из всех этих ошибок новичка :): У меня есть коллекцияView с заголовками разделов и названиями ячеек (UILabels), которые динамически подаются через cloudkit. Я смог заставить код, наконец, работать, чтобы выбрать ячейку, а затем отправить название ячейки во 2-ое свойство navigationItem.title ViewController.Передача данных из CollectionViewCell в NavigationItem.title на 2nd ViewController

Однако теперь второй ViewController перезагружается после его появления в первый раз. Я встроил первый CollectionViewController в контроллер навигации. И я создал push-сегу в раскадровке из моей ячейки прототипа в CollectionView для второго ViewController и предоставил идентификатор для segue. Любая идея, почему она перезагружает второй ViewController снова после появления в первый раз?

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 


    self.performSegueWithIdentifier("selected", sender: indexPath) 


} 


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if segue.identifier == "selected" { 


     let indexPaths : NSArray = self.collectionView!.indexPathsForSelectedItems() 
     let indexPath : NSIndexPath = indexPaths[0] as NSIndexPath 

     let theSelectedItem = sections[indexPath.section].category[indexPath.item] 


     let svc = segue.destinationViewController as TableViewControllerNew 
     svc.navigationItem.title = theSelectedItem 

     // I created the tableview controller in the storyboard, and then subclassed the UITableViewController, and set the storyboard tableview controller's class to the subclass in the identity inspector 
    } 
+0

Nevermind! Я понял, проблема .... новичок ошибка! Я не понимал, что если у вас есть сегу в раскадровке, вам не нужно также вызывать «performSegueWithIdentifier». Надеюсь, этот пост может помочь кому-то другому. Кроме того, найден альтернативный вариант кода в методе prepareForSegue, который короче. Вместо двух линий для indexPaths и indexPath выше, замените эту строку: 'пусть indexPath:! NSIndexPath = self.collectionView .indexPathForCell (отправитель, как CollectionViewCell)' –

ответ

0

Установите self.navigationItem.title = ... в ... методе didSelect, а затем сбросить его старое название в viewWillAppear методе первых ОК. Это избавит вас от необходимости создавать глобальную переменную в вашем первом VC или передать заголовок в качестве свойства для вашего второго VC, хотя оба решения должны работать.

+0

Спасибо! Однако, прямо перед вашим комментарием, я наконец нашел достаточно похожий пример на этом сайте. Однако теперь у меня есть новая проблема. Новые комментарии/код выше. Цените любое понимание! –

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