从push segue返回后,Tableview行保持选中状态

时间:2012-12-15 14:08:59

标签: iphone segue

我的视图控制器是UIViewController。我已将UITableView添加到UIView。选择tableview行时,push segue将触发一个新的视图控制器。但是,从新视图控制器返回时,所选行保持选中状态。当我的第一个控制器是UITableviewController时,我没有遇到此问题,但我必须将其更改为UIViewController,因为我想在我的视图中添加活动指示器。 我注意到的另一件事是当我的第一个控制器是UITableviewController时,从新的视图控制器返回时没有调用viewDidLoad(但现在它被调用)。

6 个答案:

答案 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