我的视图控制器是UIViewController
。我已将UITableView
添加到UIView
。选择tableview行时,push segue将触发一个新的视图控制器。但是,从新视图控制器返回时,所选行保持选中状态。当我的第一个控制器是UITableviewController
时,我没有遇到此问题,但我必须将其更改为UIViewController
,因为我想在我的视图中添加活动指示器。
我注意到的另一件事是当我的第一个控制器是UITableviewController
时,从新的视图控制器返回时没有调用viewDidLoad
(但现在它被调用)。
答案 0 :(得分:10)
添加...
[tableView deselectRowAtIndexPath:indexPath animated:YES];
tableView:didSelectRowAtIndexPath:
中的
答案 1 :(得分:4)
试试这个:
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
这会帮助你......
答案 2 :(得分:3)
这种机制是建议答案的一种变体,在细节视图消失时会删除选择,但也有助于用户知道他们选择了什么来进入详细视图:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.tableView deselectRowAtIndexPath:self.tableView.indexPathForSelectedRow animated:YES];
}
这似乎是Apple在自己的应用中所做的事情。有关示例,请参阅联系人应用程序中选择联系人记录时的行为。
答案 3 :(得分:2)
您可以添加
[tableView deselectRowAtIndexPath:indexPath animated:YES];
在tableView:didSelectRowAtIndexPath:
委托中。
或者你可以做到
-(void)viewWillAppear:(BOOL)animated
{
[table reloadData];
}
答案 4 :(得分:2)
Swift 3.0:
tableView.deselectRow(at: indexPath, animated: true)
答案 5 :(得分:-1)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
这可能有助于作为问题的更新答案。
在此处找到有关此主题的一些信息。 http://www.raywenderlich.com/81880/storyboards-tutorial-swift-part-2