[英]How to get data from UITableView cell to a global variable
我正在嘗試在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)
}
嘗試將sender.view強制轉換為UITableViewCell,那么您應該能夠訪問單元格的textLabel。
guard let cell = sender.view as? UITableViewCell else {
//error handling
return
}
let text = cell.textLabel.text
不確定為什么要在tableView單元格上使用輕擊手勢識別器。 這是另一種可能對您有用的解決方案。
您可以使用func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
從委托方法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
符合viewDidLoad
UITableViewDelegate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.