如果滚动过去,则在 NSString 中存储 UITableView 的值



我对我正在开发的应用程序有一个有趣的要求。我有一个UITableView,里面有一堆物品。我正在尝试记录查看了哪些项目(滚动过去)。例如,如果列表包含字母 A-Z,并且用户向下滚动UITableView到字母 T,则值 A,B,C,D,E.F...。T 将作为NSString存储在 NSUserDefaults 中。

我想将实际的行文本存储为 NSString 中的值。例如,A 而不是 1,B 而不是 2,等等......

我已经做了一些挖掘,但似乎找不到任何有用的东西。关于我如何实现这一目标的任何想法?

函数

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

每次查看单元格时都会调用。然后,您可以使用一种方法将indexPath.row转换为字母并将其存储在NSUserDefaults中

编辑 - 在重新阅读您的问题时,我的印象是您只是在谈论行的通用标题。这很简单 - 因为您必须在cellForRowAtIndexPath中设置标题文本 - 因此您可以在执行此操作时将其弹出为默认值。

制作一个 plist ( NSDictionary ) 并制作成对 ( 键值 ) 如 1 - A 2- B 等。当您想要存储它时,请编写一个方法,该方法将搜索您的值以查找键。

如果您有动态数据:

做一个NSMutableDictionary,以及

NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];

在:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   [dict setObject:cell.label.text forKey:indexPath.row];

}

编辑:

您可以使用此方法获取可见行:

indexPathsForVisibleRows

返回一个索引路径数组,每个路径标识接收器中的可见行。

- (NSArray *)indexPathsForVisibleRows

返回值NSIndexPath 对象的数组,每个对象表示一个行索引和节索引,它们共同标识表视图中的可见行。如果没有可见的行,则返回 nil。

我假设您正在从包含 A、B、C 等的数组填充列表。

你的数组将是:(A,B,C,D,E,F,G)

因此,首先将数组的每个索引转换为 NSMutableDictionary,使数组如下所示,此处访问是指该行是否已访问或否,默认情况下 0 表示 No:

(
{
value = "A"
visited = 0
},
{
value = "B"
visited = 0
},
{
value = "C"
visited = 0
},
{
value = "D"
visited = 0
},
)

现在在cellForRowAtIndexPath上这样做:

NSMutableDictionary *editDict = [arrayObjects objectAtIndex:indexPath.row];
[editDict setInteger:1 forKey:@"visited"];
[arrayObjects replaceObjectAtIndex:indexPath.row withObject:editDict];

这样,所有已访问的行都将有 1 个键"已访问"

然后你可以运行一个循环来保存对应于访问= 1的值,无论你想要什么地方

最新更新