嗨我試圖在單元格中傳遞一個變量,當單擊單元格中的按鈕時,該變量是標籤。但問題是每次將代碼放入cellForRowAtIndexPath時,它每次都從錯誤的單元格獲取標籤。爲什麼以及如何解決這個問題?在桌面視圖中點按鈕 - 錯誤的單元格
var variableToPass: String!
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell : MainCell! = tableView.dequeueReusableCellWithIdentifier("MainCell") as! MainCell
variableToPass = label1.text
cell.label1.userInteractionEnabled = true
let tapButton = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapLabel(_:)))
cell.label1.addGestureRecognizer(tapButton)
return cell as MainCell
}
func tapButton(sender:UITapGestureRecognizer) {
performSegueWithIdentifier("SegueIdentifierName", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SegueIdentifierName" {
let viewController = segue.destinationViewController as! ViewController
viewController.getVariablePassed = variableToPass
}
}
您應該分離出你的代碼和子類的UITableViewCell,然後在子類中創建點擊手勢識別器。此外,您需要將手勢識別器的代表設置爲CELL。 – Loxx
您可以使用'didSelectRowAtIndexPath'委託方法。 –
@DharmeshKheni你可以,我一直這樣做,但從來沒有像這樣,總是在UITableViewCell的子類中,從來沒有在控制器 – Loxx