Повернуть вид перед нажатием?

У меня есть два представления A и B. A нажимает на B, а B возвращается к A. В A, используя shouldAutorotateToInterfaceOrientation, я ограничиваю вращение до Portrait и PortraitUpsideDown.

В B я ограничиваю вращение до LandscapeLeft / Right.

Однако, когда я нажимаю для просмотра B, независимо от начальной ориентации моего устройства, в представлении B также отображается портрет, пока я не поверну свое устройство. С этого момента он автоматически поворачивается на LandscapeLeft / Right, как и должно.

Все, что я прочитал до сих пор, говорит о shouldAutorotateToInterfaceOrientation, но я правильно настроил эту настройку (по крайней мере, я так думаю).

Как сделать так, чтобы вид B всегда начинался в альбомной ориентации?

Спасибо.


person wayneh    schedule 20.01.2012    source источник
comment
Вам следует пересмотреть дизайн, поскольку он заставляет пользователей поворачивать устройство после нажатия кнопок.   -  person Costique    schedule 20.01.2012
comment
@Costique Я бы хотел оставить дизайн приложения таким, какой он есть. Все виды, кроме одного, начинаются в одной ориентации. Вроде как приложение YouTube при просмотре видео.   -  person wayneh    schedule 21.01.2012


Ответы (2)


Самый простой способ сделать так, чтобы ваш контроллер представления с именем B всегда запускался в альбомной ориентации, - это представить его модально, а не передавать его на контроллер навигации. Похоже, это метод, который приложение YouTube использует для поворота интерфейса.

B *nextVC = [[B alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:nextVC animated:YES];

Если вам абсолютно необходимо продвинуть представление, вы можете сделать что-то вроде этого:

B *nextVC = [[B alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:nextVC animated:NO];
UIViewController *cont = [[UIViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:cont animated:NO];
[cont dismissModalViewControllerAnimated:NO];

Вы не поверите, но на самом деле это дает хороший эффект.

person NJones    schedule 20.01.2012
comment
Прекрасно работает! Я использовал вариант push (второй блок кода), чтобы оставить остальную часть кода неизменной. Огромное спасибо! - person wayneh; 25.01.2012
comment
@wayneh Рад это слышать, если это то, что вы искали, отметьте его как принятый. - person NJones; 25.01.2012

Вам нужно будет использовать модальное представление. И есть кнопка «Готово» или что-то подобное, чтобы вызвать dismissModalViewControllerAnimated.

person LJ Wilson    schedule 20.01.2012