4

我的视图控制器是一个UIViewController. 我已经添加UITableViewUIView. When the tableview row is selected, a push segue fires a new view controller. 但是,当从新视图控制器返回时,所选行保持选中状态。当我的第一个控制器是 an 时,我没有遇到这个问题UITableviewController,但我不得不将其更改为 an UIViewController,因为我想将活动指示器添加到我的视图中。我注意到的另一件事是,当我的第一个控制器是 a时UITableviewControllerviewDidLoad从新视图控制器返回时没有调用(但现在它被调用了)。

4

6 回答 6

11

添加...

[tableView deselectRowAtIndexPath:indexPath animated:YES];

tableView:didSelectRowAtIndexPath:

于 2012-12-15T14:14:47.583 回答
4

尝试这个:

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

这将帮助你...

于 2012-12-15T14:18:14.537 回答
4

这种机制是建议答案的一种变体,当详细视图消失时会删除选择,但也可以帮助用户了解他们选择了什么来进入详细视图:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self.tableView deselectRowAtIndexPath:self.tableView.indexPathForSelectedRow animated:YES];
}

这似乎是苹果在他们自己的应用程序中所做的。请参阅在联系人应用程序中选择联系人记录时的行为示例。

于 2013-12-07T06:27:45.160 回答
2

你可以加

[tableView deselectRowAtIndexPath:indexPath animated:YES];

tableView:didSelectRowAtIndexPath: 委托。

或者你可以做

-(void)viewWillAppear:(BOOL)animated
{
    [table reloadData];
}
于 2012-12-15T14:20:19.417 回答
2

斯威夫特 3.0:

tableView.deselectRow(at: indexPath, animated: true)

于 2017-02-09T20:51:50.580 回答
-1
tableView.deselectRowAtIndexPath(indexPath, animated: true)

这可能有助于作为问题的更新答案。

在此处找到有关此主题的一些信息。http://www.raywenderlich.com/81880/storyboards-tutorial-swift-part-2

于 2014-12-16T14:22:35.213 回答