在previous SO question之后,我试图让我的tableView单元格选择正确,保存和其他东西。
我已切换,但无法保存indexPath并检索它以显示选择,即使用户离开视图或重新启动应用程序也是如此。
以下是代码:
@property (nonatomic, strong) NSIndexPath* lastIndexPath;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
if([self.lastIndexPath isEqual:indexPath])
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
...
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if(self.lastIndexPath)
{
UITableViewCell* uncheckCell = [tableView
cellForRowAtIndexPath:self.lastIndexPath];
uncheckCell.accessoryType = UITableViewCellAccessoryNone;
}
if([self.lastIndexPath isEqual:indexPath])
{
self.lastIndexPath = nil;
}
else
{
UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
self.lastIndexPath = indexPath;
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSNumber numberWithInt:self.lastIndexPath.row] forKey:@"selectedCell"];
[defaults synchronize];
}
即使在用户关闭并重新打开视图后,如何保存indexPath并检索它以显示选择?
提前致谢。
答案 0 :(得分:1)
您应该在viewWillAppear
。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSNumber *lastRow = [defaults objectForKey:@"selectedCell"];
if (lastRow) {
self.lastIndexPath = [NSIndexPath indexPathForRow:lastRow.integerValue inSection:0];
}
重新启动应用时,您应该从lastIndexPath
获取NSUserDefaults
,否则为零。
答案 1 :(得分:0)
你应该做两件事:
1)在didSelectRowAtIndexPath中,重新加载先前选定的行(如果可见) 2)在cellForRowAtIndexPath中,如果indexpath.row与您选择的单元格相同,请在那里进行检查。如果是,请给它勾选标记,如果不是,则不要