当按钮是iOS中自定义单元格的子视图时,如何动态更改按钮文本?

Posted

技术标签:

【中文标题】当按钮是iOS中自定义单元格的子视图时,如何动态更改按钮文本?【英文标题】:How do you change button text dynamically when button is subview of a custom cell in iOS? 【发布时间】:2013-08-07 18:35:07 【问题描述】:

我正在制作一个 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

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

【问题讨论】:

请在询问之前请在谷歌上搜索。已有许多解决方案可用。 我之前看了一下,没有找到,但我会再看一遍。 你的单元格似乎不是自定义的......是吗? @TheTiger 是的,它是一个自定义单元格。 -(void)clickMethod:(id)sender[sender setTitle:@"Change" forState:UIControlStateNormal]; 这样做。 【参考方案1】:

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

-(void)clickMethod:(id)sender

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

发送者将拥有点击按钮的实例。

【讨论】:

以上是关于当按钮是iOS中自定义单元格的子视图时,如何动态更改按钮文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何从动态创建的表格视图单元格的输入字段中将数据检索到数组

单击列表视图中自定义单元格中按钮的侦听器

iOS,标题中自定义单元格的边距与行不同,自动布局?

当应用程序运行静态单元格的视图控制器时,iOS UI 崩溃

使用 Auto Layout 创建具有多个不同自定义单元格的 UITableView 具有几乎相同的子视图

如何动态更改自定义单元格的表格视图单元格的高度?