gpt4 book ai didi

iphone - 每个单元格中有多个项目的 UITableView

转载 作者:可可西里 更新时间:2023-11-01 05:39:14 25 4
gpt4 key购买 nike

我有一个表格 View ,我试图在其中放置一个带有图像和标签的按钮。我想在单击后更改按钮的图像。

代码如下:

- (UITableViewCell *)tableView:(UITableView *)_tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";
checkedImg = [UIImage imageNamed:@"buttonUnChecked1.png"];

UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}


//Set up the cell...
NSString *cellValue = [suggestions objectAtIndex:indexPath.row];

cell.selectionStyle = UITableViewCellSelectionStyleNone;

check = [UIButton buttonWithType:UIButtonTypeCustom];
check.frame=CGRectMake(0,35,20,20);
[check setImage:checkedImg forState:UIControlStateNormal];
[check addTarget:self action:@selector(checkClicked:) forControlEvents: UIControlEventTouchUpInside];
[cell.contentView addSubview:check];

cellContent = [[UILabel alloc]initWithFrame:CGRectMake(40,32,500,25)];
cellContent.text = cellValue;
[cell.contentView addSubview:cellContent];
return cell;
}


-(void)checkClicked:(UIButton *)b
{
checkedImg = [UIImage imageNamed:@"buttonChecked1.png"];
[check setImage:checkedImg forState:UIControlStateNormal];

}

通过这样做,按钮的图像得到改变,但只有最后一个而不是被点击的那个。我知道背后的原因,但我不知道如何实现我想要的。

最佳答案

获得所需结果的结构化方法:

为您的表格单元格创建一个 UIView 子类(包含一个按钮和标签)。您实例化这些自定义 View 并将它们设置为 cellForRowAtIndexPath 中每个表格单元格的 contentView

您的每个自定义 View 都会监听自己的按钮是否被按下。当它被按下时,它会切换其状态并告诉主视图 Controller (通过委托(delegate)方法)它已被切换。主视图 Controller 在有问题的单元格上调用 reloadData 以使其以正确的外观重新加载。

请注意,此方法要求您告诉每个自定义 View 它在表中呈现的索引路径——这样它可以通知主视图 Controller 的委托(delegate)方法——需要此信息来触发重新加载适当的单元格。

顺便说一句,我假设您想在用户完成编辑后查看表格中按钮的状态,而您当前的方法并没有非常明确地捕获状态信息——您必须迭代您的按钮,或将所选项目添加到可变数组或其他内容。

关于iphone - 每个单元格中有多个项目的 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5380021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com