我正在尝试在UITableView
中保存单元格的文本,以备后用。我在另一个Stack Overflow帖子中看到,建议使用
sender.view
当我将其打印到控制台时,它的位置是:
Optional(<UITableViewCell: 0x7f8e0a803400; frame = (0 0; 375 50); text = 'Event 1'; clipsToBounds = YES; autoresize = W; gestureRecognizers = <NSArray: 0x60400024f150>; layer = <CALayer: 0x60400002b940>>)
但是,当我尝试访问
sender.view?.text
XCode显示错误提示
Value of type 'UIView' has no member 'text'
我还没有找到从UIView中获取文本的任何方法,有可能吗? 预先感谢!
编辑:
发件人是UITapGestureRecognizer
,我是通过按按钮进入方法的
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTapGesture))
tapGesture.numberOfTapsRequired = 1
tapGesture.numberOfTouchesRequired = 1
cell.textLabel?.text = mydata[indexPath.item]
cell.addGestureRecognizer(tapGesture)
cell.isUserInteractionEnabled = true
return cell
}
@objc func handleTapGesture(sender: UITapGestureRecognizer) {
performSegue(withIdentifier: "SegueToScanner", sender: self)
}
答案 0 :(得分:1)
尝试将sender.view强制转换为UITableViewCell,那么您应该能够访问单元格的textLabel。
guard let cell = sender.view as? UITableViewCell else {
//error handling
return
}
let text = cell.textLabel.text
答案 1 :(得分:0)
不确定为什么要在tableView单元格上使用轻击手势识别器。这是另一个可能对您有用的解决方案。
您可以使用
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
的{{1}}委托方法
在您的情况下,它应该看起来像这样。
UITableViewDelegate
确保您的extension YourViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let cell = tableView.cellForRow(at: indexPath) as? UITableViewCell {
let text = cell.textLabel?.text
}
}
符合ViewController
中的UITableViewDelegate