ios - IOS/Swift:将表视图中的对象传递给详细视图控制器
问题描述
我正在尝试从 tableview 中获取一个对象并将其传递给详细视图,我知道如何在 Objective-C 中执行此操作,但我是第一次学习 Swift。但是,我的代码没有从索引路径或对象中获取行。
这是我的代码。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
print("segue")
if segue.identifier == "showDetail"{
if let destinationVC = segue.destination as? detailVC {
)
if let indexPath = self.tableView.indexPathForSelectedRow {
print("row%@",indexPath)//Prints as nil
let thisItem = myItems[indexPath.row]//never gets here
destinationVC.item = thisItem
}
}
}
}
谁能明白为什么我没有得到行或对象?在此先感谢您的任何建议。
编辑:
我得到它与以下工作:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
let indexPath: NSIndexPath = self.tableView.indexPathForSelectedRow! as NSIndexPath
let anItem: myItem = myItems[indexPath.row];
let destVC = segue.destination as? detailVC
destVC?.item = anItem
}
}
解决方案
实现UITableViewDelegate
方法,
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let item = myItems[indexPath.row]
self.performSegue(withIdentifier: "showDetail", sender: item)
}
然后在下面实现,
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showdetail" {
let detailController = segue.destination as! detailVC
detailController.item = sender as! Your_Item
}
}
推荐阅读
- intellij-idea - 项目使用 maven 成功运行,但在使用 intellij 运行时失败
- c# - 通过 Moqs It.IsAny
作为方法参数 - php - 如何仅用数字替换字符串结尾 - preg_replace php
- java - 加装手柄 助焊剂返回型
- android - tns 医生说缺少“ANDROID_HOME”,即使它设置在 circleCi
- sql - SQL Server 中没有 Order By 子句的 SQL Select 语句的顺序
- python - 在 Heroku 上安装 ODBC 驱动程序
- c - C 程序:getenv 在 GDB/DDD 中返回 NULL
- javascript - html2canvas 无法加载图像未定义
- php - SQLSTATE [HY000]:一般错误:1364 字段“角色”没有默认值