UITableView lazyload - reloadData не работает - PullRequest
0 голосов
/ 12 августа 2011

похоже, это классическая проблема, но я не смог найти ни одного потока с рабочим решением.

У меня есть UITableView, который я хочу "лениво загрузить" с некоторым XML-файлом, загруженным с моего сервера.

Мой UITableView правильно объявлен в .h ...

IBOutlet UITableView *tblView;

...

@property (nonatomic, retain) IBOutlet UITableView *tblView;

..., подключенном в Интерфейсном Разработчике и синтезирован в .m:

@synthesize tblView;

Сейчас... когда загружается viewcontroller, делегаты UITableView (numberOfSectionsInTableView, numberOfRowsInSection) вызывают один раз.Но на данный момент у меня нет никаких данных, поэтому эти методы возвращают 0.

Как только мои данные загружены с сервера и проанализированы, я вызываю ...

[tblView reloadData]

..но это не имеет никакого эффекта.Делегатов вообще не вызывают.

Я также пытался

[[self tblView] reloadData]

И это тоже не работает.

Я даже пытался выполнить вызов через executeSelectorOnMainThreadвот так

...

[self performSelectorOnMainThread:@selector(fillTableWith:) withObject:arrAppointmentsFromServer waitUntilDone:NO];

...

- (void)fillTableWith:(NSMutableArray *)arrAppointmentsFromServer
{
    self.arrAppointments = arrAppointmentsFromServer;

    //Calls a refresh of the tableview
    [tblView reloadData];
}

И это тоже не сработает.

Любые подсказки или решение?

Заранее спасибо

1 Ответ

0 голосов
/ 12 августа 2011

Хорошо, понял ...

мой контроллер вида фактически наследуется от UITableViewController ...

Поэтому мне не нужно объявлять IBOutlet, синтезировать его или что-то еще ...

Когда приходит время перезагрузить данные, я просто делаю:

[[self tableView] reloadData];

потому что tableView напрямую ссылается на сам элемент управления.

Теперь методы numberOfSectionsInTableView и numberOfRowsInSection вызываются правильно

...