cell上のbuttonクリックイベントが異なるインタフェースにどのように伝わるかについて

2320 ワード

以前の考え方はbuttonの親ビューの親ビューを取得し、エージェントを利用してネット上でこの考えを見つけたのは、確かにいいですね.今分かち合う
a.我々Cellのクラスでは、TableView Controlでコールバックするためのblockブロックのタイプ変数を定義する必要があります.blockコールバックの場合、そのCellおよびCellでクリックされたボタンをTableView Controlに転送することができます.blockコールバックを深く理解するには、前のブログObjective-CのBlockコールバックモードを参照してください.
.次はCell対応クラスでBlockブロックタイプを宣言するコードです.
//
作成
cell

block
ブロックボタンの
tag
に届く
ViewController

typedef
void
(^CellBlock) (
CCustomTableViewCell
* cell,
UIButton
*button);
b.コールバックを受信するCellにCellBlockタイプの変数を追加する
1 @property (strong, nonatomic) CellBlock block;

c.ブロックを設定するsetterメソッドを追加し、パラメータは入力するブロックである
1 -(void)setTagButtonBlock:(CellBlock)cellBlock
2 {
3     self.block = cellBlock;
4 }

d.異なるbuttonをクリックすることは、入力されたblockに異なる値を設定すること、すなわちButtonのtagをblockに入力することである.追加された3つのボタンは、コールバックメソッドに対応しています.コードは次のとおりです.
- (
void
)btnClick:(
UIButton
*)btn{    
self
.
block
(
self
, btn);
}
(3)我々のTable ViewでCellのコールバックを実現し、コールバックパラメータButtonを与える.tagの値の違いは、対応するビジネスロジックを実行し、コールバックのコードは以下の通りです.
- (
UITableViewCell
*)tableView:(
UITableView
*)tableView cellForRowAtIndexPath:(
NSIndexPath
*)indexPath{    
//1.
作成
cell
   
CCustomTableViewCell
*cell = [
CCustomTableViewCell
cellWithTableView
:tableView];         [cell
setTagButtonBlock
:^(
CCustomTableViewCell
*cell,
UIButton
*btn) {         [
self
agreeOrComment
:btn
andIndex
:indexPath];     }];        
//2.
この方法で計算した
cell
の高さ
    cell.
statusFrame
=
self
.
statusFrames
[indexPath.
row
];        
//3.
1つ戻る
cell
   
return
cell;
}