2011-04-28 1 views
1

У меня есть пара видов, которыми управляют их собственные контроллеры, некоторые из которых вложены. Я хотел бы поддержать поворот, некоторые виды позволяют поворачиваться в любую ориентацию, некоторые только к одной из ориентаций портрета (нормальная или перевернутая).Множественные требования к автоматическому повороту нескольких элементов управления ViewController

В моем случае мне нужно реализовать -shouldAutorotateToInterfaceOrientation в моем корневом контроллере, чтобы разрешить вращение для любого из подзонов. Проблема заключается в том, что rootController не знает, разрешить ли это вращение, потому что нужно спросить об этом контроллеру subviews.

В -shouldAutorotateToInterfaceOrientation моей rootController, я мог бы сделать что-то вроде:

return [self.settingsController shouldAutorotateToInterfaceOrientation]; 

обеспечить необходимую логику вращения, но это было бы правильным способом это сделать? Я прочитал apple's doc about rotation, но на самом деле это не действительно.

ответ

1

Для дальнейшего использования я отвечу на свой вопрос.

Моя проблема заключалась в том, что я вложенными viewControllers и я показал на вид ViewController уровня к югу, вызвав что-то вроде:

self.view = _subLevelViewController.view; 

или

[self.view addSubview:_subLevelViewController.view]; 

По-видимому, раскрой ViewController как то не что Apple намерена сделать для вас.

Вы должны придерживаться 1 «корневой ViewController», и вы должны показать другие viewControllers, используя методы, как:

[self presentModalViewController:_subLevelViewController animated:YES]; 

Больше информации по этому вопросу и очень хорошо для чтения:
http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

0

я нашел этот пост и связанный с ним блог являются наиболее краткими инструкциями по созданию вложенных контроллеров представлений. Это стоит обновление:

// "self" is the root view controller. 
if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]) 
    // The following is not available until iPhone 5.0: 
    [self presentViewController:self.subViewController animated:YES completion:NULL]; 
else 
    // For iOS 4.3 and earlier, use this (deprecated in 5.0): 
    [self presentModalViewController:self.subViewController animated:YES]; 

я оставил пустой здесь, но обратите внимание, что новый метод позволяет передавать функцию инлайн через completion: паров. В классе ref он будет вызываться после запуска subViewController viewDidAppear:.

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