2012-04-29 3 views
0

У меня есть три диспетчера просмотра в стеке навигации. Первый контроллер представления не использует uitoolbar, второй - третий, а третий - нет.hiding uitoolbar оставляет пробел в верхней части

Проблема в том, что, когда я перехожу от второго UIViewController к третьему UITableViewController, если я скрываю панель инструментов, в верхней части экрана есть белый пробел.

Вот картинка:

gap at top

настоящее время у меня [self.navigationController setToolbarHidden:YES animated:YES]; в viewWillDisappear второго контроллера представления, но я также положить его в методе viewWillAppear контроллера третьего представления. Оба они заставляют зазор появляться.

Как это исправить?

+0

Когда вы скрываете панель инструментов? До или после нажатия и в каком методе? – CodaFi

+0

Я обновил вопрос, чтобы ответить на ваши вопросы. – ladookie

ответ

0

Прежде всего, я бы рекомендовал использовать setToolbarHidden:YES animated:NO, чтобы новый UIViewController появился без панели инструментов. Я думаю, что ваш метод покажет его сначала, а затем он исчезнет, ​​верно? Если вы используете animated:NO (или используйте подпись метода без animated:), новый UIViewController должен «нажать» UIToolbar для второго UIViewController, когда третий UIViewController будет нажат на экран.

Во-вторых, вам, вероятно, нужно взглянуть на ваши удары и стойки для вашего представления UIViewController в Interface Builder. Это почти наверняка то, что вызывает этот разрыв. Вероятно, вы хотите иметь фиксированное верхнее и нижнее поле и гибкую высоту.

+0

стойки для настольного экрана соединены сверху, снизу, слева и справа от экрана. – ladookie

+0

У вас гибкая высота? То есть, вверх или вниз двойная стрелка направлена ​​или нет? – mbm29414

+0

Да. Это UITableViewController, и это все равно не позволит мне это изменить. – ladookie

0

Я отвечу на свой вопрос, но я не собираюсь его принимать, потому что это хаки.

я был в состоянии исправить это, добавив следующую строку кода в начале viewDidLoad:

[self.tableView setFrame: CGRectMake(0, 0, 320, 493)]; 

В принципе, я установил высоту Tableview фрейма быть 13 пикселей больше, чем размер полного экрана (который составляет 320 x 480).

+0

Хотя это может работать в краткосрочной перспективе, пожалуйста, поверьте мне, что вам лучше понять, как это сделать элегантно, потому что вам может понадобиться такая же функция для другого приложения в ландшафте, для iPad и т. Д. – mbm29414

Смежные вопросы