我现在正在处理同样的问题。Apple的UICatalog样本似乎带来了肮脏的解决方案。
这真的一点都不让我开心。如前所述,它用于[self.tableView deselectRowAtIndexPath:tableSelection animated:NO];
取消选择当前选定的行。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// this UIViewController is about to re-appear, make sure we remove the current selection in our table view
NSIndexPath *tableSelection = [self.tableView indexPathForSelectedRow];
[self.tableView deselectRowAtIndexPath:tableSelection animated:NO];
// some over view controller could have changed our nav bar tint color, so reset it here
self.navigationController.navigationBar.tintColor = [UIColor darkGrayColor];
}
不得不提的示例代码可能不是IOS 7 iOS 8 iOS 9iOS 10 就绪
真正让我困惑的是UITableViewController 类参考:
当表格视图第一次加载时即将出现时,表格视图控制器会重新加载表格视图的数据。每次显示表视图时,它也会清除其选择(有或没有动画,取决于请求)。该类UITableViewController
在超类方法中实现了这一点viewWillAppear:
。clearsSelectionOnViewWillAppear
您可以通过更改属性中的值来禁用此行为
。
这正是我所期望的行为……但它似乎不起作用。既不为你,也不为我。我们真的必须使用“肮脏”的解决方案并自己做。