我正在使用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。
请帮忙。 感谢。
答案 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]
}