Перерисовка UITableView - PullRequest
       4

Перерисовка UITableView

0 голосов
/ 25 ноября 2010

Хорошо, теперь я застрял на 3 часа и прочитал все остальные темы здесь, и то, что я мог найти в Google, и сделал много пробных AndError, но это не помогло.Обратите внимание, что я новичок в Objective C и Cocoa Touch.

Я получил подкласс UITableViewConroller.Я хочу иметь возможность добавлять ячейки программно.Я переопределяю следующие методы:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    SectionInfo *obj = nil;
    obj = [dataSourceMutableArray objectAtIndex:section];
    return [obj GetNumberOfCells];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [dataSourceMutableArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = nil;
    CellInfo *cellInfo = nil;
    SectionInfo *si = [dataSourceMutableArray objectAtIndex:indexPath.section];
    cellInfo = [si.cellInfos objectAtIndex:indexPath.row];
    cellInfo.mypath = indexPath;
    cell = cellInfo.cell;

    return cell;
}

Объекты CellInfo и SectionInfo - это просто оболочки.SectionInfo содержит массив объекта CellInfo, который снова содержит ячейку.Представление рисуется, как и ожидалось, независимо от того, какие разделы и ячейки я инициализирую.

Когда я позже добавлю ячейку к разделу и вызову [tableViewController.tableView reloadData]; ничего не происходит.Установка точки останова в «cellForRowAtIndexPath» и «numberOfRowsInSection» показывает, что «cellForRowAtIndexPath» вызывается, когда я перетаскиваю табличное представление из поля зрения, но «numberOfRowsInSection» никогда не вызывается снова.Может ли это быть проблемой?

Я также пробовал что-то вроде этого:

NSArray* a = [NSArray arrayWithObjects:                      [NSIndexPath indexPathForRow:2 inSection:0],                        [NSIndexPath indexPathForRow:3 inSection:0],                         [NSIndexPath indexPathForRow:2 inSection:1],                        [NSIndexPath indexPathForRow:3 inSection:1],                       nil];

[tableViewController.tableView insertRowsAtIndexPaths:a withRowAnimation:UITableViewRowAnimationNone];

Также не вызывал никаких точек останова.Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.Я надеюсь, что я просто слепой, и вы можете заметить ошибку.

Ответы [ 2 ]

2 голосов
/ 25 ноября 2010

Может быть, сделав:

[tableViewController.tableView beginUpdates];
[tableViewController.tableView insertRowsAtIndexPaths:a withRowAnimation:UITableViewRowAnimationNone];
[tableViewController.tableView endUpdates];

Из Apple Doc:

после возврата endUpdates - таблица представление запрашивает свой источник данных и делегировать как обычно для строки и раздела данные

Обычно я делаю это, просто используя reloadData, когда у меня отображается новая строка / секция (убедитесь, что numberOfRow & numberOfSection возвращают правильное количество элементов).

Надеюсь, это поможет.

0 голосов
/ 26 ноября 2010

Хорошо, извините, но мой вопрос не касался ошибки, которую я сделал.Проблема была в том, что мне не хватало, чтобы установить ссылку на мой класс контроллера.Иногда я сталкивался с этой проблемой, исходя из языков, которые дают вам исключения NullPointerException.Так что мой единственный совет для всех, если что-то не работает, это проверять все инициализированные правильно.Извините, что вызвал работу для всех, кто смотрит на этот вопрос.

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