UIPopoverController автоматически изменяет размер до максимальной высоты на pushViewController

У меня есть всплывающее окно, содержащее UINavigationController. Я могу отображать поповера хорошо, и он содержит navController просто отлично. NavController содержит tableView, и когда я выбираю элемент, он создает новый подробный вид:

     DeviceDetailViewController *detailViewController = 
[[[DeviceDetailViewController alloc] initWithNibName:@"DeviceDetailViewController" bundle:nil] autorelease];

Затем я нажимаю на него новый контроллер представления:

    [self.navigationController pushViewController:detailViewController animated:YES];

Это происходит, когда возникает проблема: после нажатия на новый просмотрите поповер изменения размеров до максимальной высоты, доступной на iPad.

Я попытался установить высоту всех представлений в xib на фиксированную высоту, а не на гибкость. Я попытался явно установить высоту поповера. Я также попытался использовать различные контроллеры представления в качестве дочернего представления. Проблема остается: поповер хочет, чтобы автоматически изменял свой размер до максимальной высоты всякий раз, когда на навигационный контроллер выдвигается новый вид.

Здесь ' sa вопрос , в котором обсуждается попытка преднамеренного управления размером всплывающего окна при нажатии новых представлений:

Я подумал, что это может быть метод грубой силы для управления размером. Как ни странно, однако, это на самом деле вызывает некоторые быстрые графические причуды (как будто представление было недавно анимировано), сопровождаемое продолжением изменения размера, как описано выше.

Другими словами, что-то буквально заставляет поповер на максимальную высоту, и, похоже, это происходит после всех методов делегатов, которые были вызваны.

Это контроллер навигации? Кто-нибудь видел подобные вещи?

68
задан Community 23 May 2017 в 12:08
поделиться

1 ответ

Это исправило это для меня после того, как у меня возникла такая же проблема (по совпадению, и сегодня):

РЕДАКТИРОВАТЬ : Поскольку contentSizeForViewInPopover устарел в iOS7.0 , используйте preferredContentSize .

Исходный ответ ниже :

В свой detailViewController добавьте следующее:

- (void)viewWillAppear:(BOOL)animated {

    CGSize size = CGSizeMake(320, 480); // size of view in popover
    self.contentSizeForViewInPopover = size;

    [super viewWillAppear:animated];

}

Вы также хотите добавить что-то похожее на исходный DeviceDetailViewController, чтобы предотвратить изменение размера при нажатии на задний элемент NavbarItem.

123
ответ дан 24 November 2019 в 14:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: