【问题标题】:iPhone didSelectRowAtIndexPath not firingiPhone didSelectRowAtIndexPath 没有触发
【发布时间】:2010-11-02 18:15:44
【问题描述】:

所以我试图默认在我的视图首次加载时选择 tableView 中的第一行。我正在这样做我的 viewWillAppear 方法:

NSIndexPath *tempPath= [NSIndexPath indexPathForRow:0 inSection:0];

[theTable.delegate tableView:theTable didSelectRowAtIndexPath:tempPath];

这会触发方法,但单元格不会保持选中状态。这会触发正确的方法并在那里执行代码,我永远不会取消选择它。用户按下另一个单元格后,它会保持正确选中状态。只是不是第一次。有谁知道可能导致这种怪异的原因是什么?我什至尝试过这样做:

[[theTable.delegate tableView:theTable cellForRowAtIndexPath:tempPath] setSelected:YES];

想法?

【问题讨论】:

    标签: iphone objective-c xcode ipad ios


    【解决方案1】:

    首先,您不应该像那样直接调用委托方法。

    如果您确实需要以编程方式选择单元格(就像 Mail 应用程序那样),请使用 selectRowAtIndexPath 方法:

    [theTable selectRowAtIndexPath:tempPath animated:YES scrollPosition:UITableViewScrollPositionBottom];
    

    【讨论】:

    • 你说得对,我知道,我只是不知道该怎么做。这成功了。谢谢你启发我! :)
    【解决方案2】:

    根据 HIG,您不应该让表格视图单元格处于选中状态。 (强烈)鼓励您在执行点击所需的任何操作后立即取消选择该行。

    对于持久选择,您应该使用附件,并且可以将单元格的附件设置为复选标记以指示“已选择”

    【讨论】:

    • 这与我的应用程序现在的运行方式不符。我希望整个单元格都被突出显示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多