gpt4 book ai didi

ios - 如何创建一个动态大小的数组

转载 作者:行者123 更新时间:2023-11-28 18:11:56 28 4
gpt4 key购买 nike

我想要实现的目标:

我有一个 UITableView,我想检查表是否被选中,并保存在一个数组中,以便于访问对应于该行的 YES 或 NO 值,以便之后我可以操作数据。

我的代码如下

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUInteger row = [indexPath row];

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSString *cellLabelText = cell.textLabel.text;

if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
cell.accessoryType = UITableViewCellAccessoryNone;
selected[row] = NO;
}
else {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
selected[row] = YES;
}
}

我可以创建一个 BOOL selected[some value] 但我的问题是我需要的最大索引是未知的,因为我的表大小不断变化。因此设置最大索引限制了我。

我是 Objective C 的新手,我有 PHP 背景,因此我不知道是否可以创建一个数组来执行我想在 Objective-C 中执行的操作。

否则,我在 objective-c 中有什么选择可以轻松编写/读取 selected[row] = YES/NO

我需要一种方法来编写 YES/NO 并将其链接到 indexpath.row

最佳答案

使用 NSMutableSet 并存储所选行的 NSIndexPath。如果选择一行,则将路径添加到集合中。如果取消选择一行,则从集合中删除路径。

要查看是否选择了一行,请查看 indexPath 是否在集合中。

顺便说一句——这只有在行固定的情况下才有效。如果用户可以添加、删除或重新排序行,那么这种方法将不起作用。在这种情况下,您需要存储数据键,而不是索引路径。

创建类型为 NSMutableSet 的 ivar。我们称它为 selectedRows:

selectedRows = [[NSMutableSet alloc] init];

然后在 didSelectRow 中你做:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
BOOL selected = [selectedRows containsObject:indexPath];

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSString *cellLabelText = cell.textLabel.text;

if (selected) {
cell.accessoryType = UITableViewCellAccessoryNone;
[selectedRows removeObject:indexPath];
} else {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[selectedRows addObject:indexPath];
}
}

在您的 cellForRow... 方法中,您执行类似的操作:

BOOL selected = [selectedRows containsObject:indexPath];
cell.accessoryType = selected ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;

关于ios - 如何创建一个动态大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16551228/

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