我在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()
}
仅当我第二次点击一行后,详细信息视图才会出现。不是第一次?
答案 0 :(得分:0)
几年前,我遇到了这个问题,不知道它在今天仍然存在。
我通过使用GCD将所有逻辑封装在主线程中的didSelectRowAt
中来解决了该问题。您可以查看以下内容:
https://stackoverflow.com/a/27907119/6642629
https://stackoverflow.com/a/26183438/6642629
您可以尝试以下操作:
快捷键4
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
DispatchQueue.main.async {
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)
})
}
}
答案 1 :(得分:0)