我有一个 tableView,我通过将行的 indexPath 添加到数组然后添加复选标记来跟踪选择了哪些行。
我正在使用 cellForRowAtIndexPath 方法中的这段代码迭代该数组,它就像一个魅力:
for (NSIndexPath * element in indexArray)
if ([indexPath compare:element] == NSOrderedSame) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
但是,我也将该行的值放入另一个数组中以用于其他目的。我想如果我在这两种情况下都使用第二个数组,我可以简化我的代码,但我不明白我将如何重写上面的代码。我明白了这个概念,但上面的代码使用了 indexPath 比较,我需要将字符串与数组进行比较。
这是我不知道如何改变的“如果”线。
for (NSString *element in valueArray) {
if ([indexPath compare:element] == NSOrderedSame) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
想法?谢谢。
编辑更多信息
我的数组包含 400 个不会更改的唯一项目。将他们的 indexPath 添加到我的数组并遍历它以添加复选标记工作正常。我想使用数组的字符串值进行迭代的原因是因为我想向 tableView 添加一个 searchBar。
添加该 searchBar 后,当我进行搜索时,searchResultsTableView 会将我的 400 个唯一项目截断为与该搜索匹配的少数项目 - 所以我们的 searchResultsTableView 中只有一行或几行。现在假设我们选择了搜索中返回的第一行 - 然后我的代码将该行的 indexPath 添加到我的 indexArray 以跟踪复选标记。它将添加索引 0,0。
但是当我们取消搜索模式时,第一行 0,0 将在我的 tableView 中检查,因为我们在 searchResultsTableView 中选择了 0,0 - 即使我们选择的行将在完整 tableView 中的列表下方。看看我要去哪里?所以我的想法是跟踪行的字符串而不是它的 indexPath 来缓解这个问题。
更清晰?