1) すべてのボタンを含むカスタム セルを作成する
2) 好きなすべてのイベント (SendType、LikeType など) の列挙型を作成します。
3) セルのプロトコルを作成します。デリゲートはすべてのセルのコントローラーでなければなりません。
4)6つのボタンのアクションはセルにとどまる必要があり、セルはそのデリゲートを呼び出して、イベントの種類にENUMを渡し、セル参照を追加します。
5) コントローラは、必要なプロトコル メソッドによって呼び出され、セル参照とイベントのタイプを使用して何を行うかを決定します。
すなわち 1) カスタム セル (ContactCell) を作成し、以下を追加します。
property (id<TapOnSixButtonsProtocol>) tapDelegate;
- (void)fillCellWithID:(NSString*)ID
idContact: (NSString*)idContact
withDelegate: (id<TapOnSixButtonsProtocol>) tapDelegate;
{
self.tapDelegate = tapDelegate
2)
typedef NS_ENUM(NSInteger, CustomTypeOfEvent) {
Like = 1,
Send = 2,..
};
3)
@protocol TapOnSixButtonsProtocol <NSObject>
-(void)didClickonCell: (CustomCell*)cell withType:(CustomTypeOfEvent)t;
@end
4)
self.Btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
[self.Btn1 addTarget:self
action:@selector(tapped:)
forControlEvents:UIControlEventTouchUpInside];
self.Btn1.tag = Like;
(repeat for all...)
..
void tapped:(UIBUtton*)sender{
CustomTypeOfEvent t = sender.tag // get back type..
[self.tapDelegate didClickOnCell: self withType];
5) コントローラーで:
in: - (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ContactCell cell = [tableView dequeueReusable..
[cell fillCellWithID: @"234444"
idContact: "67899999"
withDelegate: self];
//delegate:
-(void)didClickOnCell: (CustomCell*)cell withType:(CustomTypeOfEvent)t {
switch(t){...
}