2016-07-22 7 views
1

ボタンを持つCustomCellクラスがあります。私はプロトタイプのセル(.xibではない)を使用しています。私は、tabviewcellのボタンをセグを実行し、新しいクラスに値を渡したいと思います。どのようにして、テーブルビューセル内のボタンに対して一意のアクションを作成できますか?ありがとう!TableViewCellのボタンからSegueを実行する

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    ... 

    selectedAreaCode = areaCodes[indexPath.row] 

    // Configure Cell 
    cell.areaCodeButton.setTitle(areaCode, forState: UIControlState.Normal) 


    cell.areaCodeButton.addTarget(self, action: "segue", forControlEvents: UIControlEvents.TouchUpInside) 

    cell.selectionStyle = UITableViewCellSelectionStyle.None 


    return cell 
} 

func segue() { 

    self.performSegueWithIdentifier("toDialer", sender: self) 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if(segue.identifier == "toDialer") { 

     let nextViewController = (segue.destinationViewController as! PhoneDialer) 
     nextViewController.passedAreaCode = selectedAreaCode 
    } 
} 
+0

このように、それぞれ異なるボタンを持つ複数の「CustomCell」セルがありますか? – gadu

+0

'cell.button.tag = indexPath.row'を使用する – Lamar

+0

同じテーブルのセルを別のビューに分割したい場合は、異なる再利用識別子を与える必要があります。 – orccrusher99

答えて

1

は、カスタムセルからのタップ動作を取得する方法の束があるのですが、私はあなたがセグエしようとしているので、あなたがUIViewControllerからアクションを取得しようとしていると仮定しています。

セルをデキューしているため、cellForRowAtIndexPathの機能の範囲内で、セルへのフルアクセスが簡単にできます。セルのパブリックプロパティとしてボタンを持っている限り、ボタンのターゲットをsegueメソッドに設定できます。

また、あなたが渡そうとしているのはボタン自体のタイトルであるため、セレクタから送信者にアクセスできます。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = yourCell() 
    cell.button.addTarget(self, action: #selector(tap(:)), forControlEvents: .TouchUpInside) 
} 

func segue(sender: UIButton) { 
    // Perform segue and other stuff 
    sender.title // This is the area code 
} 
+0

ありがとう、私はこれを試しています。ただし、渡される値は常にテーブル内の最後の値です。 –

+0

コードを確認してもらえますか? – jimmyy

+0

メインポストに追加します –

関連する問題