将CollectionViewCell中的数据传递到第二个ViewController上的NavigationItem.title

时间:2014-12-17 23:30:07

标签: swift collectionview

更新,请参阅下面的评论,因为我做错了。认为有人可能从所有这些新手错误中受益:):我有一个带有节标题和单元标题(UILabels)的collectionView,它是通过cloudkit动态输入的。我能够让代码最终工作以选择一个单元格,然后将单元格的标题发送到第二个ViewController的navigationItem.title属性。

然而,现在第二次ViewController在第一次出现后正在重新加载。我在导航控制器中嵌入了第一个CollectionViewController。我在故事板中创建了一个push segue,从我在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
    }

1 个答案:

答案 0 :(得分:0)

self.navigationItem.title = ... ...方法中设置didSelect,然后将其重置为第一个VC的viewWillAppear方法中的旧标题。这将使您不必在第一个VC中创建全局变量,或者必须将标题作为属性传递给第二个VC,尽管这两个解决方案也应该可以正常工作。