gpt4 book ai didi

ios - 选择一个 UITableViewCell 在滚动后选择另一个单元格

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

尽管这是一个常见问题,但我不知道如何解决这个问题。

我提到了 Selecting one UITableViewCell selects the other cells at that same position when you scroll up or down但是我没看懂。

我有 allMumbaiArray(在 cellForRowAtIndexPath 中使用)和 tableview allllMumbaiTableview。通过使用以下代码,我可以选择和取消选择该行。

根据 EI 船长的解决方案更新

 @property (nonatomic, strong) NSMutableArray *arrIndexpaths;

tableView 方法 -:

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

if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"CellIdentifier"];
}

cell.textLabel.text = [allMumbaiArray objectAtIndex:indexPath.row];

if ([self.arrIndexpaths containsObject:[NSNumber numberWithInt:indexPath.row]])
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else{
cell.accessoryType = UITableViewCellAccessoryNone;
}


return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.view endEditing:YES];

NSString *testing =[allMumbaiArray objectAtIndex:indexPath.row];
UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[self.arrIndexpaths addObject:[NSNumber numberWithInt:indexPath.row]];
NSLog(@"%@",testing);
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
tableViewCell.accessoryType = UITableViewCellAccessoryNone;
[self.arrIndexpaths removeObject:[NSNumber numberWithInt:indexPath.row]];

}

问题: 1) 当我在滚动 tablewview 后选择第一行时,另一行被选中。如何解决这个问题?

2)连续选择和取消选择行后,如何保持唯一选择的行值?

最佳答案

解决办法

创建一个可变数组来存储选定的表格 View 单元格索引..

@property (nonatomic, strong) NSMutableArray *arrIndexpaths;  

cellForRowAtIndexPath

if ([self.arrIndexpaths containsObject:[NSNumber numberWithLong: indexPath.row]])
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}

didSelectRowAtIndexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
tableViewCell.accessoryType = UITableViewCellAccessoryCheckmark;
[self.arrIndexpaths addObject:[NSIndexSet indexSetWithIndex:indexPath.row]];

}

didDeselectRowAtIndexPath

 - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{

UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
tableViewCell.accessoryType = UITableViewCellAccessoryNone;
[self.arrIndexpaths removeObject:[NSIndexSet indexSetWithIndex:indexPath.row]];

}

这是示例项目...

demo project

关于ios - 选择一个 UITableViewCell 在滚动后选择另一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32843412/

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