【问题标题】:Issue with deselectRowAtIndexPath in tableViewtableView 中的 deselectRowAtIndexPath 问题
【发布时间】:2009-12-10 17:32:05
【问题描述】:

我有一个包含几行文本的单元格,在选定/突出显示时会改变颜色。问题在于,当新的 viewController 被推送时,会出现取消选择动画,这会在视觉上分散注意力,因为文本会突然恢复到未选择状态。我已将 deselectRowAtIndexPath 语句移到推送新视图控制器的行之后,但这没有效果。

如何防止用户看到单元格取消选择(不实现计时器)?任何帮助将不胜感激。

【问题讨论】:

    标签: iphone cocoa-touch


    【解决方案1】:

    如果您使用的是UITableViewController,则无需致电deselectRowAtIndexPath:。当您的表格视图再次可见时,这将自动为您完成。

    如果您没有使用UITableViewController,因为您有一个更复杂的接口,您需要从viewWillAppear:animated: 方法手动调用deselectRowAtIndexPath:

    【讨论】:

    • 这很有趣,不知道那点琐事。
    • 我使用的是tableViewController,但是弹出推送的vc时不会自动取消选中该行
    • 你继承了 UITableViewController?如果是这样,你打电话给[super viewWillAppear]?如果您阅读 UITableViewController 的概述部分,我发现它确实讨论了 UITableViewController 基类提供的各种行为。
    【解决方案2】:

    我认为用于表格视图和推送新 VC 的一般范例是您在 viewWillAppear:animated 方法中取消选择表格行。然后在弹出 VC 时,他们会看到哪一行已用于导航到该 VC。

    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
    
        [self.myTableView deselectRowAtIndexPath:[myTableView indexPathForSelectedRow] animated:YES];
    
    }
    

    所以从你的 didSelectRowAtIndexPath 方法中删除 deselectRow。

    【讨论】:

    • 谢谢,有道理。但是,我的 viewWillAppear 方法没有触发?
    • 更新:viewWillAppear 没有触发,因为我使用的是导航控制器,所以我实现了 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    相关资源
    最近更新 更多