错误" secondViewController没有名为" mastername"的成员

时间:2014-12-28 19:25:33

标签: swift tableview segue

我正在使用IOS 8 App Development Essentials中的示例。我向我的第二个控制器添加了一个变量,但一直收到此错误。 第二个控制器代码:

Class SocondDetailController: UIViewController{
   var mastername: String?
...
}

第一个控制器代码:

override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) 
{
if segue.identifier == "ShowDetails"
{        
   let detailViewController = segue.destinationViewController as SocondDetailController
   let myIndexPath = self.tableView.indexPathForSelectedRow()
   let row = myIndexPath?.row 
   SocondDetailController.mastername = tableData[row!]
}
}

我是Swift和IOS开发的新手。刚从71岁开始。 我一直在使用VB.Net。

请帮忙。 感谢。

1 个答案:

答案 0 :(得分:0)

这一行:

SocondDetailController.mastername = tableData[row!]

应该是:

detailViewController.mastername = tableData[row!]

mastername是一个实例属性,因此您必须通过SocondDetailController的实例访问它,而不是SocondDetailController类型本身。

此外,尽管由于视图控制器中的逻辑可能不需要,但我还是避免使用强制解包运算符!,而是选择更安全的可选绑定:

let row = myIndexPath?.row
if let row = row {
    detailViewController.mastername = tableData[row]    
}

或更简洁:

if let row = myIndexPath?.row {
    detailViewController.mastername = tableData[row]    
}