2016-04-14 6 views
-1

テーブルビューでボタンを処理する方法が見つかりません。 OK、私は100コイン、50コインのようないくつかの値で表示されているtableviewを持って...そして右側にボタンがあります。だから問題はあなたがそのボタンを押したときに、そのボタンはあなたが特定の値のボタンをタップしたことを知っていますか?いくつかの場所とコードを投稿できますか?プロトタイプのプロトタイプセルのボタンをスウィフト2のテーブルビューで処理する

ボタンは製品

答えて

1

あなたがクリックされたボタンのどのセルで見つける上記の方法のindexPathから

func btnClickAction(sender: UIButton) 
{ 
    var superView = sender.superview 

    while superView?.isKindOfClass(UITableViewCell) == false 
    { 
     superView = superView?.superview 
    } 

    var cell = superView as! UITableViewCell 
    var indexPath = self.tableView.indexPathForCell(cell)! as NSIndexPath 
} 

すなわち、あなたのコントローラ内の1つのメソッドを作成を購入するためのメッセージを実行する必要があります。あなたは上記の方法にあなたのボタンのターゲットを追加する必要があり、あなたのcellForRowAtIndexPath

btn.addTarget(self, action: "btnClickAction", forControlEvents: UIControlEvents.TouchDragInside) 
+0

ありがとうございます。私は人のゲーム-2質問の理由を知りません –

0

をすなわち私は、これは一種の後期である知っているが、私は本当にこのソリューションのように私はそれが誰かを役に立てば幸い!これは@Jatin Chauhanの答えですが更新されました。あなたがここにIBActionにあなたのXIBやストーリーボードからボタンを接続することができ、これを使用しスウィフト3

@IBAction func actionFromButtonPress(_ sender: Any) { 

    var superView = (sender as AnyObject).superview 

    while type(of: (superView!)!) != UITableViewCell.self 
    { 
     superView = (superView as AnyObject).superview 
    } 

    let cell = superView as! UITableViewCell 
    let indexPath = self.tableView.indexPath(for: cell)! as NSIndexPath 
    let correspondingDataInDataSource = self.tableViewDataSource[indexPath.row] 

     self.tableView.reloadData() 
} 

注:カスタムのUITableViewCellを持っている場合は、私が行ったようにあなたの代わりに「YourCustomTableViewCellClass.self」に「UITableViewCell.self」が、するタイプを比較するべきではありません。

注2:whileループでは、2回アンラップする必要があることに注意してください。私がそれを印刷したとき、それはオプショナルでオプションであり、この方法でそれをアンラップすることによって、タイプは互いに正確に比較することができます。

関連する問題