我试图从我的tableViewCell传递数据,但是,在我的let cell = sender as! UITableViewCell
致命错误:在打开Optional时意外发现nil 值。
如何让我的手机成为可选手机?我试图从数组中传递数据。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destination = segue.destination as? UsersProfileViewController{
let cell = sender as! UITableViewCell
let selectedRow = partnerTable.indexPath(for: cell)?.row
if let name = usersArray[selectedRow!].firstLastName{
destination.name = name
}
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "toUser", sender: nil)
}
}
答案 0 :(得分:0)
我发布了一件事,你想获得当前选择的tableview数据并希望将它传递给下一个视图控制器,你可以用一种简单的方式做到这一点。检查tableview单元格选择的委托方法
didSelectRowAtIndexPath
从这个委托方法中你可以保存选中的行索引并在准备segue方法中这样调用这个函数,你可以在didSelectRowAtIndexPath委托方法中设置selectedRow值。
usersArray[selectedRow!].firstLastName
答案 1 :(得分:0)
你应该这样触发
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.performSegue(withIdentifier: "toUser", sender: indexPath.row)
}
并准备segue
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
let selectedRow = sender as? Int
if let name = usersArray[selectedRow!].firstLastName{
destination.name = name
}
}
答案 2 :(得分:0)
如果您更喜欢使用故事板使用segue:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let indexPath = tableView.indexPathForSelectedRow {
guard let destinationVC = segue.destination as? UsersProfileViewController else {return}
let selectedRow = indexPath.row
destinationVC.name = usersArray[selectedRow].firstLastName
}
}
您还可以以编程方式转到目标ViewController,并将所需的值传递给该控制器。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let sb = UIStoryboard.init(name: "StoryboardName", bundle: nil)
let destinationVC = sb.instantiateViewController(
withIdentifier: "StoryboardId for viewcontroller set in storyboard") as? UsersProfileViewController
guard let name = usersArray[selectedRow!].firstLastName { else return }
destinationVC.name = name
self.presentViewController(destinationVC, animated: true, completion: nil)
}
<强>步骤:强>
答案 3 :(得分:0)
要做的步骤:
首先在View控制器中创建selectedIndex属性。
使用indexPath从didSelectRowAtIndexPath表视图的委托方法设置selectedIndex属性值。
在准备Segue方法中,您可以在选择索引时从数据源对象中找到数据值。
4.从数据源中为选定索引传递值,并将selectedIndex属性设为nil。