由于某些原因,从孩子UITableViewController
返回我的父UIViewController
后,所选单元格会一直显示。我已经尝试过以下明显的解决方案而没有任何运气:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:animated];
}
我将问题缩小到以下代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *selectedString = [self tableView:tableView cellForRowAtIndexPath:indexPath].textLabel.text;
if([selectedString isEqualToString:@"Browser"])
{
[self performSegueWithIdentifier:@"showBrowser" sender:indexPath];
}
else if([selectedString isEqualToString:@"Settings"])
{
if([[User user] loggedIn])
{
[self performSegueWithIdentifier:@"showUserSettings" sender:indexPath];
}
else
{
[self performSegueWithIdentifier:@"showLogin" sender:indexPath];
}
}
else if([selectedString isEqualToString:@"Blank Page"])
{
[self performSegueWithIdentifier:@"showBrowser" sender:[NSURL URLWithString:@"about:blank"]];
}
}
删除- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
中的所有内容并只放置一个performSegueWithIdentifier
方法一旦从孩子身上回来,将取消选择该单元格,但我现在所拥有的不会取消选择它。
我也尝试过放置
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
在didSelectRowAtIndexPath
方法本身没有运气。
有什么想法吗?
答案 0 :(得分:2)
在UITableViewController
工具viewWillAppear
代表中。
在viewWillAppear
中写下这一行:
[self.tableView reloadData];
希望这会有所帮助.. :)
修改强>
答案 1 :(得分:1)
实现didSelectRowAtIndexPath并写入 [tableView deselectRowAtIndexPath:indexPath];
答案 2 :(得分:0)
尝试在[cell setSelected:NO animated:YES]
方法中添加didSelectRowAtIndexPath
。
答案 3 :(得分:0)
尝试:
[self.tableView reloadData];
在ViewWillApear中
答案 4 :(得分:0)
Swift 3.1
在func tableView(didSelectRowAt indexPath)
插入:
tableView.deselectRow(at: indexPath, animated: true)