2017-12-13 6 views
1

こんにちはタッピングしているのtableViewの行のボタンに知らせる私は、私のカスタムtableViewCell私たちは私のtableViewに

enter image description here

に更新ボタンを追加しました(ネットを中心に見て)それを行うには、私は、これは

@IBAction func rowReload(_ sender: Any) { 

     let index = IndexPath(row: , section:) 
     self.tableView.reloadRows(at: [index], with: .none) 
    } 

をFUNC作成したが、私の問題は、私はリロードアクションは、私がボタンを押した行に行われなければならない私の関数に伝えることができるか、このラインlet index = IndexPath(row: , section:)です? (私は次のrow:section:を書くために持っているもの、簡単な言葉では?)

+0

テーブルビューには複数のセクションがありますか? –

+0

セクションは1つだけです – fisherM

+0

[テーブルビューで押されたuibuttonの検出:Swiftのベストプラクティス](https://stackoverflow.com/questions/27429652/detecting-uibutton-pressed-in-tableview-swift-best-practices) –

答えて

0

あなたcellForRow方法では、以下に示すようなボタンにタグを割り当てる:

yourCell.yourButton.tag = indexPath.row 

次にcellForRow方法でそれにセレクターを割り当てます。

yourCell.yourButton.addTarget(self, action: #selector(myClass.rowReload(_:)), forControlEvents: .TouchUpInside) 

そして、あなたのrowReloadメソッドの引数senderでタイプUIButtonを持つ必要がありますし、あなたの方法は次のようになります。そして、あなたはそのタグにアクセスすることができ、あなたのIndexPathはなり

func rowReload(_ sender: UIButton) { 

let index = IndexPath(row: sender.tag, section: 0) 
+0

しかし、私は@IBOutlet弱いvar refButtonを追加する必要があります:UIButton!私のコントローラまたは私のカスタムtableViewCellクラスで? – fisherM

+0

カスタムtableViewCellにあるはずです。 –

+0

それが機能します!ありがとうございます – fisherM

0

あなたの方法では、

> "func tableView(_ tableView: UITableView, cellForRowAt indexPath: 
> IndexPath) -> UITableViewCell" 

エレメントにタグ番号を付けることができます(ボタン) 例:

cell.button.tag = indexPath

だから、あなたがボタンをタップすると、あなたはそのindexPathなどのタグを取得することができます。

@IBActionのFUNCのrowReload(_送信者:任意){

let index = sender.tag 
    self.tableView.reloadRows(at: [index], with: .none) 

}

0

のUITableViewに複数のセクションがある場合、我々はindexpathを決定するためにタグを使用することはできません。

let indexPath = tableView.indexPathForSelectedRow 
関連する問題