我对我正在开发的应用程序有一个有趣的要求。我有一个UITableView
,里面有很多项目。我正在尝试记录哪些项目被查看(滚动过去)。例如,如果列表包含字母AZ,并且用户向下滚动UITableView
到字母T,则值A,B,C,D,EF ... T将存储为NSString
NSUserDefaults
。
我想将实际的行文本存储为NSString中的值。例如,A而不是1,B而不是2等......
我做了一些挖掘但似乎无法找到任何有用的东西。关于如何实现这一目标的任何想法?
答案 0 :(得分:2)
功能
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
每次查看单元格时都会调用。然后,您可以使用一种方法将indexPath.row转换为字母并将其存储在NSUserDefaults中
编辑 - 重新阅读您的问题我得到的印象是您只是谈论行的通用标题。这很容易 - 因为你必须在cellForRowAtIndexPath中设置标题文本 - 所以你可以在执行此操作时将其弹出为默认值。
答案 1 :(得分:1)
制作一个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。
答案 2 :(得分:1)
我假设您正在填充包含A,B,C等的数组中的列表。
你的阵列是: (A,B,C,d,E,F,G)
因此,首先将数组的每个索引转换为NSMutableDictionary,使得数组如下所示,此处访问指的是该行已被访问过或没有,默认情况下为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相对应的值,无论你想要什么