我想将单击行的indexPath.row传递给另一个控制器,所以我使用了下一个代码,但它打印出错误,该视图控制器没有名为tableview的成员。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "body"{
var secondViewController : SecondViewController = segue.destinationViewController as! SecondViewController
var indexPath = self.tableView.indexPathForSelectedRow() //get index of data for selected row
secondViewController.data = indexPath.row // get data by index and pass it to second view controller
}
}
我可以修复此错误吗?
答案 0 :(得分:1)
我认为tableView并不存在。它不是tableView函数。
您必须为此tableView
创建一个强大的出口:
@IBOutlet var tableView: UITableView!
并且不要忘记将其与您的tableView
并从方法TableView中删除覆盖。
修改强>
对于你的另一个问题,你可以按照他的建议跟随Kirsteins:
tableView.indexPathForSelectedRow
方法返回一个可选的NSIndexPath
。你必须打开它。然而,最好的方法是使用if let
安全展开来处理这种情况,其中没有选定的行且indexPath
是nil
。类似的东西:
if let indexPath = tableView.indexPathForSelectedRow() {
secondViewController.tempString = indexPath.row.description
} else {
// handle the situation where the is no selected row
}
并在您的SecondViewController中声明一个变量,该变量将保存此值。
检查THIS以获取更多信息。