gpt4 book ai didi

IOS:didSelectRowAtIndexPath 在选择单个单元格时选择多个单元格

转载 作者:行者123 更新时间:2023-11-29 00:16:42 24 4
gpt4 key购买 nike

我有一个 UITableView,其中填充了 30 多个 UITableviewCell。

我面临的问题是,当选择一行并更改单元格的 accessoryType 时,该行的第十一行也会被修改。

我已经尝试打印 [indexPath row] 值,但它只显示所选的行,而不显示另一行。

我正在使用以下代码:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}

cell.textLabel.font=[UIFont fontWithName: @"Arial" size: 14.0];
cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;

.
.
.
}

请帮我解决这个问题

最佳答案

您需要跟踪选定的单元格,您可以使用 NSMutableDictionary 作为键使用 IndexPath.row 并作为值一个字符串来执行此操作,因此在您的 DidSelectRow 中修改字典设置 Row = "Selected"的值,并在您的CellForRow 方法检查是否 Dictionary[indexPath.row] == "Selected"然后把你的附件默认删除它

@interface ViewController () <UITableViewDataSource,UITableViewDelegate>

@property NSMutableDictionary * dict;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_dict = [NSMutableDictionary dictionary];
}

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.accessoryType = UITableViewCellAccessoryNone;
if([((NSString*)[_dict objectForKey:[NSString stringWithFormat:@"%li",(long)indexPath.row]]) isEqualToString: @"Selected"])
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
cell.textLabel.font=[UIFont fontWithName: @"Arial" size: 14.0];
cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;

return cell;
}

在你的 didSelectRowAtIndexPath 方法中

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString * value = (NSString*)[_dict objectForKey:[NSString stringWithFormat:@"%li",(long)indexPath.row]];

if ([value isEqualToString:@"Selected"]){
[_dict setValue:@"UnSelected" forKey:value];
}else{
[_dict setValue:@"Selected" forKey:[NSString stringWithFormat:@"%li",(long)indexPath.row]];
}

[tableView reloadRowsAtIndexPaths:@[indexPath,[NSIndexPath indexPathForRow:[value integerValue] inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
}

希望对你有帮助

关于IOS:didSelectRowAtIndexPath 在选择单个单元格时选择多个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45168937/

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