1

我正在制作一个 iOS 应用程序,它有一个Table View原型单元格。我在方法中配置了单元格cellForRowAtIndexpath,效果很好,但是当我想在按钮创建后更改按钮中的文本时,我遇到了麻烦。我想要它,以便在我点击按钮时更改按钮文本。我试着做:

[button setTitle:@"Change" forState:UIControlStateNormal];

在我单击按钮时运行的 clickMethod 内部,但无论我按下哪个按钮,它都会更改最后一个单元格中的文本。我在上面尝试的方法不起作用,因为我有同一个按钮的多个实例。(每行一个)所以有人知道我如何更改我只单击的按钮的文本。创建按钮的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
//configure cell
button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(clickMethod:) forControlEvents:UIControlEventTouchUpInside];


[button setTitle:@"Button" forState:UIControlStateNormal]
[button setTag:6789];//set tag so we can identify the button
button.Frame=CGRectMake(218, 5, 99, 53);
[cell addSubview:button];//put the button in the cell
[cell setIndentationWidth:45];
[cell setIndentationLevel:1];
return cell;//return the cell object

非常感谢您的帮助。我可以发布更多代码,但是我认为这与问题无关。提前致谢。

4

1 回答 1

1

您不能在按钮上设置标题,因为cellForRowAtIndexPath:方法调用多次。如果按钮是全局声明的,它将更改最后一个按钮的标题。就那样做

-(void)clickMethod:(id)sender
{
    [sender setTitle:@"Change" forState:UIControlStateNormal];
}

发件人将具有单击按钮的实例。

于 2013-08-07T18:58:13.803 回答