こんにちは、私はセル内のボタンをクリックすると、ラベルのセルに変数を渡そうとしています。しかし問題は、コードをcellForRowAtIndexPathに入れるたびに間違ったセルから毎回ラベルを取得することです。なぜ、どのようにこれを修正するには?これを行うにはtableviewのタップボタン - 間違ったセル
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