1

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

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

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

4

3 回答 3

2

功能

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

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

编辑-重新阅读您的问题时,我的印象是您只是在谈论行的通用标题。这很容易——因为你必须在 cellForRowAtIndexPath 中设置标题文本——所以当你这样做时你可以将它弹出到默认值中。

于 2013-09-16T09:32:33.680 回答
1

创建一个 plist ( NSDictionary) 并创建对 (key-value),例如 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。

于 2013-09-16T09:32:48.303 回答
1

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

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

因此,首先将数组的每个索引转换为 NSMutableDictionary 使得数组如下所示,这里visited 是指该行是否已访问,默认为0 表示否:

(
{
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 键“已访问”

然后你可以运行一个循环来保存与visited = 1相对应的值到你想要的任何地方

于 2013-09-16T10:44:18.703 回答