Проблема с UINavigationController и UITableView - PullRequest
0 голосов
/ 17 февраля 2011
self.tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];

Как получить правильный размер из представления, когда у меня есть UINavigationController и UITabBarController?

Чтобы обойти это, мне нужно сделать:

CGRect frame = self.view.frame;
frame.origin.y -= [UIApplication sharedApplication].statusBarFrame.size.height;
tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];

Мне всегда нужно вручную устанавливать высоту моих представлений / табличных представлений, чтобы уместиться в UINavigationController, и это действительно раздражает

Это кажется странным, почему бы автоматически не вычесть высоту строки состояния? Это стиль по умолчанию, а не прозрачная строка состояния.

Спасибо

ОБНОВЛЕНИЕ: Если я выделю tableView ПОСЛЕ метода init, просто установка фрейма в self.view.frame работает нормально. Wuzzup остроумие?

1 Ответ

1 голос
/ 17 февраля 2011

Установка фрейма UINavigationController до того, как метод init не будет работать, потому что UINavigationController еще не загружен и не отображается Кадр устанавливается только после того, как контроллер и его вид загружены.

Вы должны настраивать свою таблицу (и все подобные инициализации) в методе viewDidLoad UINavigationController. Если вы сделаете это, вы не увидите никаких проблем такого рода.

...