Почему мой UITableView меняется с UITableViewStyleGrouped на UITableViewStylePlain - PullRequest
2 голосов
/ 14 апреля 2010

Мое приложение имеет контроллер представления, который расширяет UITableViewController. Метод инициализации выглядит следующим образом:

- (id)initWithCoder:(NSCoder*)coder {
    if (self = [super initWithCoder:coder]) {
        self.tableView = [[UITableView alloc] initWithFrame:self.tableView.frame 
                                                      style:UITableViewStyleGrouped];
    }

    return self;
}

Когда представление первоначально загружено, оно отображается как UITableViewStyleGrouped. Однако, если мое приложение получит предупреждение о нехватке памяти, приведенное выше представление изменится на UITableViewStylePlain. Не существует связанного xib-файла с View / Controller. Методы viewDidUnload и didReceiveMemoryWarning просты:

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

Мой вопрос: почему стиль таблицы меняется, когда я получаю предупреждение о памяти?

Это происходит на устройстве и на симуляторе. Устройство представляет собой 3G iPhone с ОС 3.1.3, на симуляторе ОС 3.1

.

1 Ответ

4 голосов
/ 14 апреля 2010

При инициализации вы звоните [super initWithCoder:coder]. Вероятно, было бы лучше переопределить назначенный инициализатор для UITableViewController, то есть -initWithStyle:. Вероятно, происходит то, что когда вы создаете контроллер табличного представления, вызывая [super init…], он создается с уже установленным свойством tableView; то есть он создает табличное представление при инициализации. Вот почему ваш вызов self.tableView.frame работает - это не должно работать, если значение self.tableView равно nil. Вот лучшая реализация:

- (id)initWithCoder:(NSCoder*)coder {
    if (self = [super initWithStyle:UITableViewStyleGrouped]) {

    }

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