我知道在选择行时,您可以使用以下代码显示复选标记:
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
如果用户在不同的视图控制器之间移动,如何使复选标记保留在选定的行上?
由于
答案 0 :(得分:0)
在UITableViewController
集clearsSelectionOnViewWillAppear
至NO
。
如果您希望在取消分配表视图控制器后保留选择,则需要将所选项存储在NSUserDefaults
之内。
-(void)viewDidLoad
{
[super viewDidLoad];
NSArray *previousSelection = [[NSUserDefaults standardDefaults] objectForKey:@"selection"];
for (NSArray *selection in previousSelection) {
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:selection[1] inSection:selection[0]] animated:NO scrollPosition:UITableViewScrollPositionNone];
}
}
-(void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
NSArray *selections = [self.tableView indexPathsForSelectedRows];
NSMutableArray *selectionsToSave = [NSMutableArray array];
for (NSIndexPath *selection in selections) {
[selectionsToSave addObject:@[selection.section, selection.row]];
}
[[NSUserDefaults standardDefaults] setObject:selectionsToSave forKey:@"selection"];
// Save as iOS 7 now saves less frequently - see note
[[NSUserDefaults standardDefaults] synchronize];
}
关于使用synchronize
编辑:
更正了答案,感谢@rmaddy指出您只能在NSUserDefaults
中添加简单类型。