Я работаю над универсальным приложением для iPhone / iPad. Я использую MonoTouch, но я могу отвечать на вопросы в Obj-C (я должен иметь возможность расшифровать его, и UIKit MonoTouch по большей части равен 1 к 1).
В основном мое приложение имеет 2 представления: представление «вход в систему» и представление «вход в систему».
При запуске приложения мой вид входа в систему является единственным подпредставлением моего основного окна UIWindow. После входа в систему я вызываю RemoveFromSuperview в представлении входа в систему и UIWindow.AddSubView, чтобы добавить представление входа в систему. Все это прекрасно работает, и ориентации работают также, потому что я отвечаю на ShouldAutorotateToInterfaceOrientation.
Все до тех пор, пока вы не выйдете из системы, и ориентация не начнет подниматься. На ориентации приложение ориентирует строку состояния, но оставляет мои взгляды нетронутыми. Кроме того, на iPad мой UISplitView работает очень странно: мой основной вид ориентирован в одну сторону, а детальный - в другую.
Как правильно переключать представления в окне UIWindow? Я чувствую, что ориентации должны работать автоматически, поэтому я делаю что-то не так.
UPDATE:
Вот фрагмент кода (в C #, но вы поняли):
_loginController.View.RemoveFromSuperView();
_window.AddSubView(_loggedInController.View);
Чтобы сделать обратное:
_loggedInController.View.RemoveFromSuperView();
_window.AddSubView(_loginController.View);
Довольно просто, верно?
ОБНОВЛЕНИЕ 2:
Я сделал простое воспроизведение - даже включил UISplitViewController, и он работает просто отлично.
В моем приложении должно быть что-то конкретное, что вызывает такое странное поведение.