Хорошо, теперь я застрял на 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];
Также не вызывал никаких точек останова.Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.Я надеюсь, что я просто слепой, и вы можете заметить ошибку.