2014-07-05 64 views
0

我是新来的Swift,我想知道为什么我从Obj-C翻译的这段代码在这里不起作用。VC之间的快速传递数据

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "scoreDetail" { 
      let indexPath = self.tableView.indexPathForSelectedRow() 
      let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as NSManagedObject 

      let itemVC: ScoreVC = segue.destinationViewController as ScoreVC 
      itemVC.detailItem = object 
     } 
    } 

这是故事板。我一旦有从细胞Show Replace SEGUE到UINavigatorController enter image description here

我得到这个错误,因为我在UITableViewCell

enter image description here

回答

2

问题点击无关斯威夫特用。 destinationViewController是导航控制器,而不是您的ScoreVC,所以您翻译的代码不应该有效(如果它具有相同的设置)。它应该看起来像这样,

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "scoreDetail" { 
      let indexPath = self.tableView.indexPathForSelectedRow() 
      let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as NSManagedObject 

      let nav : UINavigationController = segue.destinationViewController 
      let itemVC: ScoreVC = nav.topViewController as ScoreVC 
      itemVC.detailItem = object 
     } 
    } 
+0

你是完全正确的,我只是注意到这件事!非常感谢你 – r4id4