如何将数据从UITableView单元格获取到全局变量

时间:2018-09-03 16:28:18

标签: ios swift uitableview uiview uigesturerecognizer

我正在尝试在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)
}

2 个答案:

答案 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