0

在我之前在这里获得帮助的应用程序中,我解析了一个位于在线的 XML,第一天只显示 XML 中的一个项目,并在应用程序打开后每天添加一个项目。我希望能够为每个单元格的详细信息视图添加“标记为已读”操作。这样,用户可以阅读它,将其标记为已读,并且在后续加载时,每个加载的项目旁边都会出现一个复选标记。

由于应用程序每次都会下载 XML,因此我认为这是最好的方法。我正在考虑将数组存储到 NSUserDefault 键中。该数组将根据他们选择的行添加一个数字。如果他们选择了第 1 行并对其进行标记,则数组会将 #1 添加到其中。如果他们随后选择第 3 行并对其进行标记,则数组中将包含 1 和 3。

这是可行的吗,然后在 cellForRowAtIndexPath 中,是否为数组中包含的每一行添加一个复选标记?

我脑子里有这个想法,如果这行得通,只需要一点指导来实现它。谢谢

更新
这是我到目前为止所拥有的。在 applicationDidFinishLaunchingWithOptions 中,我检查 NSUserDefault 键“checkedrows”是否存在。如果没有,我用一个空数组的对象创建它。

if (![defaults objectForKey:@"checkedrows"]) {
        [defaults setObject:@[] forKey:@"checkedrows"];
    }

我遇到的两个主要问题是如何在 cellForRowAtIndexPath 中获取数组中的数字,如果有任何行匹配它们,请为其添加复选标记。示例:tableview 中有 5 行,数组返回 0、2、4。所以,我希望 TableView 为第一个第三个和第五个单元格添加复选标记。

另一个主要问题是如何在不删除任何旧数字的情况下将数字添加到数组中。

4

1 回答 1

1

绝对地!

您可以使用该setObject:forKey:方法将NSArray对象写入NSUserDefaults,并objectForKey:检索该数组。

现在,只需倾听

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

在您的 中UITableViewDelegate,检索 中已经存在的数组NSUserDefaults,将刚刚点击的索引(从indexPath对象中获取此信息)添加到数组中,然后简单地将数组写回NSUserDefaults!

要为选定的单元格添加复选标记,请在tableView:didSelectRowAtIndexPath:上面的委托方法中使用以下命令:

[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
于 2012-12-18T15:22:10.260 回答