【问题标题】:UITableView selectRowAtIndexPath does nothingUITableView selectRowAtIndexPath 什么都不做
【发布时间】:2011-06-10 20:21:20
【问题描述】:

我在让 selectRowAtIndexPath 工作时遇到问题。如果我在开始动画之前调用 selectRowForIndexPath 函数,这会翻转有问题的 tableview,tableview 将不会按要求突出显示 tableview 行。事实上,似乎对 tableview 做任何事情都没有给出任何响应。可能是什么问题?

我还调用了 setNeedsDisplay 之类的,但这些函数似乎没有做任何事情。

- (void)setCurrentTAType:(MHAbstractTAParameter *)aoTAParameter sequenceNo:(NSInteger)aiSequence {

    m_iSequence = aiSequence;
    NSInteger iSelectedRow = 0;

    if ([aoTAParameter isKindOfClass:[MHOverlayTAParameter class]]) {
        m_iDisplayType = MHChartTADisplayOverlay;
        [m_oTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

        MHOverlayTAParameter *oOverlayParam = (MHOverlayTAParameter *)aoTAParameter;

        switch (oOverlayParam.iOverlayTAType) {
            case MHChartOverlayNone:
                iSelectedRow = 0;
                break;
            case MHChartOverlaySMA:
                iSelectedRow = 1;
                break;
            case MHChartOverlayWMA:
                iSelectedRow = 2;
                break;
            case MHChartOverlayEMA:
                iSelectedRow = 3;
                break;
            case MHChartOverlaySAR:
                iSelectedRow = 4;
                break;
            case MHChartOverlayBoll:
                iSelectedRow = 5;
                break;
            default:
                iSelectedRow = 0;
                break;
        }


    } else {

        m_iDisplayType = MHChartTADisplayUnderlay;
        [m_oTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

        MHUnderlayTAParameter *oUnderlayParam = (MHUnderlayTAParameter *)aoTAParameter;

        switch (oUnderlayParam.iUnderlayTAType) {
            case MHChartUnderlayNone:
                iSelectedRow = 0;
                break;
            case MHChartUnderlayVolume:
                iSelectedRow = 1;
                break;
            case MHChartUnderlayRSI:
                iSelectedRow = 2;
                break;
            case MHChartUnderlayMACD:
                iSelectedRow = 3;
                break;
            case MHChartUnderlayMTM:
                iSelectedRow = 4;
                break;
            case MHChartUnderlayROC:
                iSelectedRow = 5;
                break;
            case MHChartUnderlayFastSTC:
                iSelectedRow = 6;
                break;
            case MHChartUnderlaySlowSTC:
                iSelectedRow = 7;
                break;
            case MHChartUnderlayWilliamPctR:
                iSelectedRow = 8;
                break;
            case MHChartUnderlayOBV:
                iSelectedRow = 9;
                break;
            case MHChartUnderlayPVT:
                iSelectedRow = 10;
                break;
            case MHChartUnderlayDMI:
                iSelectedRow = 11;
                break;
            case MHChartUnderlayVolumeP:
                iSelectedRow = 12;
                break;
            case MHChartUnderlayTurnover:
                iSelectedRow = 13;
                break;
            case MHChartUnderlayTurnoverP:
                iSelectedRow = 14;
                break;
            case MHChartUnderlayVolatility:
                iSelectedRow = 15;
            default:
                iSelectedRow = 0;
                break;
        }
    }

    NSIndexPath *oIndexPath = [NSIndexPath indexPathForRow:iSelectedRow inSection:0];

    [m_oTableView selectRowAtIndexPath:oIndexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];
    [m_oTableView setNeedsDisplay];
}

【问题讨论】:

    标签: iphone uitableview iphone-sdk-3.0


    【解决方案1】:

    摆脱

    [m_oTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

    在您告诉表选择该行之前,我感觉这还没有完成,因此指定的索引路径可能不存在。

    只需将该调用替换为 [m_oTableView reloadData] 并查看是否有效

    【讨论】:

    • [m_oTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];成功了。谢谢~
    猜你喜欢
    • 2012-09-29
    • 1970-01-01
    • 2019-03-08
    • 2016-12-24
    • 2017-04-18
    • 2011-08-03
    • 2014-05-11
    • 2014-09-10
    • 1970-01-01
    相关资源
    最近更新 更多