【发布时间】:2019-01-08 09:16:49
【问题描述】:
我正在为我的 xcode 项目中的一个问题而苦苦挣扎。我在表格视图中显示自定义单元格并使用didSelectRowAt indexPath: 显示详细视图。它以我想要的方式工作,但奇怪的是只在第二次点击时。
我对编程相当陌生,非常感谢您的帮助。非常感谢!
我检查了我不是偶然使用didDeselectRow at。我还通过stackoverflow尝试找到解决方案,这是我能找到的最接近我的问题的解决方案。但我使用的是didSelectRow at。
// 这是用户点击单元格时的代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// Pop Up Variables
var id:String = tasks[indexPath.row].task_id!
var title:String = tasks[indexPath.row].task_title!
var type:String = tasks[indexPath.row].task!
var desc:String = tasks[indexPath.row].task_desc!
var action:String = "Dismiss"
present(detailVC!, animated: true, completion: {
self.detailVC!.setPopup(withTaskId: id, withTitle: title, withType: type, withDesc: desc, withAction: action)
})
}
//这里只是说明一下,我在文档顶部设置切换到另一个视图控制器。
// 显示弹窗 var detailVC:TaskDetailViewController?
override func viewDidLoad() {
super.viewDidLoad()
// Set up the task detail view controller
detailVC = storyboard?.instantiateViewController(withIdentifier: "TaskDetailVC") as! TaskDetailViewController?
detailVC?.delegate = self
detailVC?.modalPresentationStyle = .overCurrentContext
// Conform to the table view protocols
tableView.dataSource = self
tableView.delegate = self
// Set Self as delegate for model and call getTasks
// Get the Tasks from the Task Model
model.delegate = self
model.getTasks()
}
仅在我第二次点击一行后才会显示详细信息视图。不是第一次?
【问题讨论】:
-
在 Swift 中尽量避免 snake case:
task_id—>taskId或更好,只需id -
您很可能有另一个手势识别器与点击单元格冲突。
-
请确认- 用力按一个单元格并检查,是否点击了第一次尝试?
-
可能从设置断点开始(或者如果您不确定如何设置断点,只需一条日志消息)并确保每次点击单元格时都正确调用
didSelect。如果您可以向我们提供有关您的设置/视图层次结构的更多详细信息,这也会有所帮助。例如,您的tableView是顶级视图吗? -
在我刚接触 iOS 时发生过好几次,因为我使用了
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath)。这可能不是你的情况,但正如其他人建议的那样,在不同的地方放置断点。或者你可以上传整个项目,我们可以尝试解决这个问题
标签: ios swift uitableview didselectrowatindexpath