gpt4 book ai didi

ios - 禁用具有单元可重用性的 UITableViewCell 中的 UIButton

转载 作者:行者123 更新时间:2023-11-29 12:40:07 25 4
gpt4 key购买 nike

我的每个 UITableViewCell 中都有一个 UIButton。当按下按钮时,我将禁用它,以便用户无法再次按下它(这是一个类似的按钮)。但是,当用户滚动经过一个单元格并滚动回该单元格时,该按钮将再次可选择。我猜这是因为当用户返回时重新绘制单元格,重置按钮。有什么办法可以避免这种情况吗?我的代码在下面

代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifer = @"cellName";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifer];

if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifer];
}
UIButton *ilikeit = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[ilikeit addTarget:self action:@selector(like:) forControlEvents:UIControlEventTouchUpInside];
ilikeit.frame = CGRectMake(55, h+70, 45, 25);
[cell addSubview:ilikeit];
return cell;
}

-(void) like:(id) sender {
((UIButton *)sender).enabled = NO;
}

最佳答案

您可以将按钮状态存储在 tableview 类的数据模型中。

假设 TableView 正在从类 MyData 加载数据,如下所示:

@interface MyData: NSObject

// Your other data here such as strings etc
NSString *otherData;
// Here add a selected flag
BOOL selected;

@end

在 TableViewDelegate 中,读写这个模型。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
MyData *thisCellData = [yourGlobalMyDataArray objectAtIndex:indexPath.row];
// set other data
if (thisCellData.selected){
// Hide the button
// Do other stuff as needed for this button
}
else {
// Show the button
// Do other stuff as needed for this button

}
}

当用户选择按钮时,应更新相同的数据模型。

希望这对您有所帮助。

关于ios - 禁用具有单元可重用性的 UITableViewCell 中的 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25201747/

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