在我的tableview的自定义单元格中更改按钮的标题

时间:2014-09-18 08:23:18

标签: ios objective-c uitableview

我有一个表视图,里面有一个单元格。这个单元格有一个按钮,在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”的按钮。 (单元格只是表格行)

请帮帮我。

3 个答案:

答案 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);
}