2016-06-04 6 views
0

Я получаю эту ошибку примерно через 5 или 10 секунд после создания нового UIWindow и делает его ключевым и видимым.Ошибка при создании и создании ключа и видимого нового UIWindow

unexpected nil window in _UIApplicationHandleEventFromQueueEvent, _windowServerHitTestWindow: (null) 

Затем он возвращает меня к старому UIWindow. Мой код ниже:

actionButton.TouchUpInside += delegate 
{ 
    var window = new UIWindow(); 
    AppDelegate.NavController = new UINavigationController(new MainViewController()); 
    window.RootViewController = AppDelegate.NavController; 
    window.Frame = UIScreen.MainScreen.Bounds; 
    window.MakeKeyAndVisible(); 
}; 

Все, что я действительно пытаюсь сделать перерыв в иерархии и начать новый стек контроллеров просмотреть через UINavigationCOntroller. Дай мне знать, спасибо!

+0

Есть ли причина, по которой вы должны это сделать? Кажется, это плохая идея. – davetw12

+0

@ davetw12 что именно? Мой код или хотите выйти из иерархии диспетчеров представлений? – imageobject

+0

Желание оторваться от иерархии. – davetw12

ответ

0
var window = new UIWindow(); 

Ваш UIWindow является локальным переменным, необходимо хранить ссылку на него где-нибудь, сделать его уровень класса вар и ваши проблемы должны уйти (так же, как статический AppDelegate.NavController будет работать).

В качестве быстрого теста просто положите GC.Collect(); где-то после window.MakeKeyAndVisible() и начните использовать элементы управления на своем MainViewController и дождитесь начала забавы. ;-)

Update:

Я просто понял, что вы повторно в CGRect из текущего окна, создайте новый, чтобы иметь четкое разделение в случае, если вы меняете ориентацию экрана, размер Глеса, и т.д ..

window.Frame = new CGRect(0, 0, UIScreen.MainScreen.Bounds.Width, UIScreen.MainScreen.Bounds.Height + 100); 
Смежные вопросы