カスタムクラスを使用してUITableViewCell
をサブクラス化しました。それにいくつかのアウトレットを追加しました。今私はIBAction
ボタンを自分の細胞の中に入れたいと思っています。私はどのようにViewContoller
内部でIBActionを定義することができます。セル内にあるボタンをクリックすると新しいセル行が追加されます
答えて
たとえば、任意のタップハンドラを作成できます。後のコードで
#define handle_tap(view, delegate, selector) do {\
view.userInteractionEnabled = YES;\
[view addGestureRecognizer: [[UITapGestureRecognizer alloc] initWithTarget:delegate action:selector]];\
} while(0)
:
SEL sel = @selector(actionOfMine:);
handle_tap(btnbck, self, sel);
は、それを処理するために:あなたはビューコントローラクラスでのように異なるインスタンスを、セルの出口を作成することはできません
-(void) actionOfMine:(UITapGestureRecognizer *)recognizer {
UIView * button = (UIView *) recognizer.view;
int i = (int)button.tag;
//...
}
// In cellForRowAtIndexpath
cell.yourButton.tag=indexPath.row;
button.addTarget(self, action: "buttonHandler:", forControlEvents: UIControlEvents.TouchUpInside)
func buttonHandler(sender:UIButton!)
{
if(sender.tag==0){
println("Button at row 0")
}
else if(sender.tag==1){
println("Button at row 1")
}
}
このアプローチでは、ボタンはセルの一部として残りませんが、ビューコントローラーの一部になります –
セルは動的に作成され、実際には各セルのコンセント接続が異なる必要があります。 できることは、カスタムセルクラスのデリゲートを作成し、セルをデキューするメソッドcellForRowAtIndexで、ビューコントローラインスタンスに設定します。 次に、ボタンの操作がトリガされたら、デリゲートメソッドを呼び出して、コントロールをView Controllerインスタンスに転送できます。
注:ビューコントローラにハンドラを追加する場合は、さらに助けを求め おかげ
をあなたのシナリオを共有してください、それはMVCパターンを中断します。ビュー上のイベントはビュー内で処理する必要があります。ただし、ビューのデリゲートを作成して、ボタンアクションハンドラ自体から呼び出すメソッドを呼び出すことができます。
また、あなたのXIBでは、あなたのUITableViewCellサブクラスとしてアウトレットクラスを指定することになります。したがって、このサブクラスだけがあなたのイベントを処理できます。ボタンが押されたときに私たちは、ブロックと呼ばれる
@IBAction func didActButton_CheckBoxClicked(_ sender: AnyObject)
{
if block_CheckBox != nil{
block_CheckBox()
}
}
:
var block_CheckBox: (() ->())!
と仮定ボタンは次のようにIBOutletアクションを持っている:
他のアプローチは、あなたのようなのUITableViewCellクラスのブロックを宣言することができます。あなたがボタンを押したときにブロックのみが呼び出されます
cell.block_CheckBox = {
()in
//Do required action
}
:
Controller
クラスでは、あなたにブロックを定義することができます。
- 1. ボタンをクリックすると、UItableviewのセル内に画像が表示されない
- 2. CollectionView - 新しいセルを追加する
- 3. コレクションビュー新しいセルが追加されたときにセルの静的変数が変更される
- 4. セルにボタンを追加する
- 5. 既存の行に新しいセルを追加する
- 6. ボタンをクリックすると新しいdivが追加されます
- 7. UItableview新しいセルが追加されたときに前のセルが消えます
- 8. UICollectionCellの最後のセルに「新規追加」ボタンを追加します。 (CoreData)
- 9. ボタンを押すとSwiftのUicollectionViewControllerにセルが追加されます
- 10. 各行がCのDataGridビューに追加されるたびにセルにボタンを追加する方法#
- 11. コレクションビューのセル内のボタンにアニメーションを追加する
- 12. UICollectionViewセル内にUIViewControllerを追加する
- 13. jtableセル内にスピナーを追加する
- 14. JTable内にBETWEENセルを追加する
- 15. 新しいセルが追加されると、UITableViewが先頭にジャンプします。それを防ぐ方法は?
- 16. 新しいボタンをクリックするとリストビューに新しいアイテムが追加されます
- 17. 最後のセルだけが行に追加されます
- 18. スウィフト - 新しいセルを追加すると、すべてのセルが変更されます(個別のセルが必要です)
- 19. fpdfセルに改行を追加する
- 20. 固定されたUITableViewに新しいセルを追加するには?
- 21. ボタン上で新しい行を追加するリストビューをクリック
- 22. perticularインデックスボタンをクリックすると、テーブルビューのセルにボタンがあります。
- 23. tableView:セル内をクリックするとindexPathForCellがnilを返します
- 24. ボタンをクリックすると入力フィールドが追加されます
- 25. 別のブック内の行を追加するセルをコピーする
- 26. 角をクリックしてボタンをクリックするとコンポーネントが追加されますか?
- 27. テーブルビューにボタンとダイナミックテキストを含むセルを追加する
- 28. Excelの特定のセルを参照します。行が追加されると値が変更されます
- 29. 別のビューからテーブルビューに新しいセルを追加する
- 30. 新しいセルを追加するとExcelファイルが破損する
プレーンなC関数が同じことを達成できる場合、マクロを使用しないでください。 –
マクロを追加すると、不必要に複雑になります。また、そのようなアプローチはMVCパターンを破るでしょう。 –
あなたの意味をより詳しく説明してください。この実装は動作し、使いやすく、メモリリークはありません。私はそのような解決法の不利な点を発見していない。これは、プログラマチックにタップを追加するのに本当に役立ちます。 – Vyacheslav