我在tableview单元格中有一些文本,您将点击它,您将传递单元格的名称,并且您将被推送到另一个视图。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath as IndexPath, animated: true)
let row = indexPath.row
valueToPass = sections[row]
print(valueToPass)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "fromWelcomeToSectionPage") {
// initialize new view controller and cast it as your view controller
let vc:sectionPage = segue.destination as! sectionPage
vc.passedValue = valueToPass
}
}
我也在另一个控制器中创建代码来检查
if passedValue == "Základy" {
print("it works")
}
这就是我试图传递它的方式。变量valueToPass是全局变量。 Idk但是当我在didSelectRowAtIndexPath中打印它时,它已经准备就绪了,但是在准备它时没有了。
点击单元格后,我在打开可选值时意外地发现了nil
我在另一个视图中创建变量的方式
var passedValue = String()
答案 0 :(得分:1)
在prepareForSegue
方法之前调用didSelectRowAt
方法,因此您无法依赖didSelectRow
中的任何逻辑来帮助传递数据。
您可以在prepareForSegue
中获取所选行并在那里使用它来获取数据并将其传递:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "fromWelcomeToSectionPage") {
// initialize new view controller and cast it as your view controller
let vc = segue.destination as! sectionPage
let selectedRow = tableView.indexPathForSelectedRow!.row
vc.passedValue = sections[selectedRow]
}
}