0

ビューで 3 つのテーブルを使用し、タグを使用してそれらを互いに分離しています。2 番目のテーブル ビューでは、cutom uitableview を作成し、その中にラベルとボタンを追加しました。

これは私が cellforrowatindexpath 内に書いたボタンです

followingButton = [UIButton buttonWithType:UIButtonTypeCustom];

  [followingButton addTarget:self action:@selector(followingButtonpressed:)forControlEvents:UIControlEventTouchUpInside];

 [followingButton setImage:[UIImage imageNamed:@"following12.png"] forState:UIControlStateNormal];

following.tag=indexpath.row;

 [followingButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

followingButton.frame = CGRectMake(220.0 ,20.0, 100, 40.0);

 [cell.contentView addSubview:followingButton];

======

-(void)followingButtonpressed:(id)sender
{

 UIView *contentView1 = (UIView *)[sender superview];

 UITableViewCell *cell1= (UITableViewCell *)[contentView1 superview];

 NSIndexPath *indexPath1 = [followingTable indexPathForCell:cell1];

[sender tag];

NSLog(@"sender tag --%d",[sender tag]);

 // UIButton *button = (UIButton *)sender;

 // UITableViewCell *cell = (UITableViewCell*)[button superview];

  UIButton *tempButtom = (UIButton *)[cell1 viewWithTag:[sender tag]];

  [tempButtom setImage:[UIImage imageNamed:@"following_off12.png"] 

forState:UIControlStateNormal];

}

しかし、クラッシュして、選択したボタンの画像を変更できませんでした。助けてください

4

2 に答える 2

0

Tagそれぞれに与えてUIButton、どのボタンが押されたかを検出するために次のコードを書いてください

 - (void)buttonPressedAction:(id)sender
{
   UIButton *button = (UIButton *)sender;
   // Get the UITableViewCell which is the superview of the UITableViewCellContentView which is the superview of the UIButton
   (UITableViewCell*)cell = [[button superview] superview];
   int row = [myTable indexPathForCell:cell].row;

  // Here **row** give you tad of specific UIButton that you tapped

  if (row == yourTag )
  {
     // write code for action
  }
}

または、セルにタグを毎回設定できますが、UIButtonは設定できません。その場合、アクションは次のようになります。

- (void)buttonPressedAction:(id)sender
{ 
   UIButton *button = (UIButton *)sender;
   int row = [button superview].tag;

   // Here **row** give you tad of specific UIButton that you tapped

  if (row == yourTag )
  {
     // write code for action
  }

}
于 2013-01-18T10:00:48.543 に答える
0
Use this to detect which button has been pressed

    UIView *senderButton = (UIView*) sender;
    NSIndexPath *indexPath = [(UITableView *)self.superview indexPathForCell: (UITableViewCell*)[[senderButton superview]superview]];
于 2013-01-18T09:53:24.220 に答える