Kod*_*ata 1 uitableview nsindexpath swift
我想实现如果在 tableviewCell 中点击 profileImage 的功能,则转至 detailView。我添加了 tapGesture 但我仍然无法弄清楚如何让 indexPath 传递数据。我试过这样,但应用程序会崩溃。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "detailSegue" {
let next: DetailViewController = segue.destination as! DetailViewController
// pattern1
let indexPath = tableView.indexPath(for: sender as! CustomTableViewCell)
// pattern2
let indexPath = tableView.indexPathForSelectedRow! as NSIndexPath
next.data = datas[indexPath.row]
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?先感谢您!
如果添加
UITapGestureRecognizer到 anUIImageView然后不要忘记将isUserInteractionEnabled属性设置为true。
创建一个变量来存储选定的 indexPath.row
var selectedCell:Int!
Run Code Online (Sandbox Code Playgroud)
在cellForRow方法中向图像视图添加手势。
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapBtnAction(_:)))
cell.imageView.tag = indexPath.row
cell.imageView.addGestureRecognizer(tapGesture)
Run Code Online (Sandbox Code Playgroud)
在目标方法中执行 segue
func tapBtnAction(_ sender: UITapGestureRecognizer) {
print("\(sender.view.tag) Tapped")
self.selectedCell = sender.view.tag
self.performSegueWithIdentifier("detailSegue", sender: self)
}
Run Code Online (Sandbox Code Playgroud)
在prepareforsegue方法中从数组中获取数据。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "detailSegue" {
let next: DetailViewController = segue.destination as! DetailViewController
next.data = datas[self.selectedCell]
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3429 次 |
| 最近记录: |