更新,请参阅下面的评论,因为我做错了。认为有人可能从所有这些新手错误中受益:):我有一个带有节标题和单元标题(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
}
答案 0 :(得分:0)
在self.navigationItem.title = ...
...方法中设置didSelect
,然后将其重置为第一个VC的viewWillAppear
方法中的旧标题。这将使您不必在第一个VC中创建全局变量,或者必须将标题作为属性传递给第二个VC,尽管这两个解决方案也应该可以正常工作。