tableView setEditing приводит к тому, что cellForRow не вызывается преждевременно - PullRequest
0 голосов
/ 07 марта 2012

У меня проблема с View Controller, который загружается из NIB.В этом NIB у меня есть 2 вида: пейзаж и портрет.Когда происходит willAnimateForRotation, я устанавливаю

// willAnimateForRotation..
if (isLandscape) {
    self.view = self.viewLandscape;
}
else {
    self.view = self.portraitView;
}

, в начале я устанавливаю обе таблицы в режим редактирования:

// viewDidLoad
[self.tableViewPortrait setEditing:YES animated:NO];
[self.tableViewLandscape setEditing:YES animated:NO]; // *

// *
Я почти уверен, что эта строка вызывает cellForRow.чтобы вызываться на tableViewLandscape на этом этапе, вместо того, чтобы установить self.tableView = self.tableViewLandscape

Это происходит только в первый раз, если я выполню 2 изменения ориентации, он будет корректно загружать элементы в tableView.

Я не хочу делать [self.tableView reloadData] при изменении ориентации ... это было бы излишним.

Может кто-нибудь увидеть более изящный способ для меня это исправить?

1 Ответ

0 голосов
/ 08 марта 2012

Хорошо, лучшее, что я мог придумать, это:

//willAnimateToRotation..
if (!self.tableViewLandscape.editing)
{
    [self.tableViewLandscape setEditing:YES animated:NO];
}

это дешевый взлом, но не могу придумать более правильного решения.

...