我有一个表视图,里面有一个单元格。这个单元格有一个按钮,在customTableVIewCell类中声明如下。
@property (weak, nonatomic) IBOutlet UIButton *myButton;
在表视图控制器中,我正在设置此按钮的方法。
[cell.myButton setTitle:@"Show cell number!" forState:UIControlStateNormal];
[cell.myButton addTarget:self action:@selector(myButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
我想在选择按钮时更改按钮的标题。
现在考虑一下: 我的表视图中有三个单元格,即我的表有三行。 在每一行中,都有一个名为myButton的按钮。
每当点击它时,我想将按钮的标题更改为1或2或3,具体取决于按钮所在的单元格编号。
我试过这个:
- (IBAction)myButtonClicked:(id)sender{
NSIndexPath *indexPath =[self.tableVIew indexPathForCell:(UITableViewCell *)[[sender superview] superview]];
NSUInteger row = indexPath.row;
NSLog(@"button was clicked for the following row %i", row);
}
但是,无论单元格#1上的按钮或单元格#2或单元格#3被点击,这都是向控制台打印“按下了下一行0”的按钮。 (单元格只是表格行)
请帮帮我。
答案 0 :(得分:1)
尝试将按钮标记设为 -
cell.myButton.tag = indexPath.row;
你的cellForRowAtIndexPath方法中的..
在你的myButtonClicked方法中获取发送者按钮的标签..然后做你想做的任何事情。
- (IBAction)myButtonClicked:(id)sender{
NSLog(@"button was clicked for the following row %i", sender.tag);
}
答案 1 :(得分:1)
你可以在IBAction中使用发件人:)
- (IBAction)myButtonClicked:(UIButton*)sender
{
[sender setTitle:@"show new title" forState:UIControlStateNormal];
}
答案 2 :(得分:0)
在初始化单元格的方法cellForRowAtIndexPath中,添加此
cell.myButton.tag=indexPath.row;
[cell.myButton addTarget:self action:@selector(myButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
并更新myButtonClicked方法。
- (IBAction)myButtonClicked:(id)sender{
UIButton *btn=sender;
NSLog(@"button was clicked for the following row %i", btn.tag);
}