UITableView单元格保持选中状态

时间:2014-03-09 05:29:12

标签: ios objective-c uitableview

由于某些原因,从孩子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方法本身没有运气。

有什么想法吗?

5 个答案:

答案 0 :(得分:2)

UITableViewController工具viewWillAppear代表中。

viewWillAppear中写下这一行:

[self.tableView reloadData];

希望这会有所帮助.. :)

修改

如果重新加载要取消选择单元格的单元格。 Thisthis肯定会对您有所帮助。

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