UITableView selectRowAtIndexPath ничего не делает - PullRequest
1 голос
/ 18 января 2011

У меня проблема при получении selectRowAtIndexPath. Если я вызову функцию selectRowForIndexPath перед запуском анимации, которая переворачивает рассматриваемое табличное представление, табличное представление не выделит строку табличного представления в соответствии с запросом. На самом деле, кажется, что что-то делать с таблицей не дает никакого ответа. В чем может быть проблема?

Я также вызвал 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];
}

1 Ответ

2 голосов
/ 18 января 2011

Избавьтесь от

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

У меня такое ощущение, что это не завершено, прежде чем вы скажете таблице выбрать эту строку, и, следовательно, указанный путь индекса может не существовать.1006 *

Просто замените этот вызов на [m_oTableView reloadData] и посмотрите, работает ли он

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...