Я думал, что это легко, как [myWindow resignKeyWindow]
и [self.window makeKeyAndVisible]
, но я думаю, нет ... Вы, ребята, знаете, что делать?Как удалить UIWindow?
Спасибо :)
Я думал, что это легко, как [myWindow resignKeyWindow]
и [self.window makeKeyAndVisible]
, но я думаю, нет ... Вы, ребята, знаете, что делать?Как удалить UIWindow?
Спасибо :)
Не вызывать -resignKeyWindow
непосредственно, это должно было быть изменено, чтобы выполнить код, когда ваш UIWindows получает удален. Чтобы удалить старое окно, вам нужно создать новый экземпляр UIWindow и сделать его -makeKeyAndVisible
, старое окно смирится с его статусом ключа. В iOS 4 будет даже мусор собирать ваш старый UIWindow, если у вас нет ссылок на него. Выполнение этого в iOS 3.x будет иметь катастрофические последствия. Предупрежден я.
Это действительно изменяет окно, которое является keyWindow, но, похоже, не удаляет его из application.windows .... – samvermette
Superview Custom Window имеет значение null. Просто установите, что он скрыт до NO – tristan
. Этот ответ ниже (от Николая Рухе) рассказывает вам, как на самом деле удалить окно. –
У меня такая же проблема, это может помочь.
Вам необходимо уничтожить все сильные ссылки перед удалением и dealloc окна, особенно rootWindowController. Я думаю, что ниже код достаточно, чтобы удалить любое окно:
[self.window.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
self.window.rootViewController = nil;
[self.window resignKeyWindow];
[self.window removeFromSuperview];
Как упоминалось в некоторых других сообщениях, вы не должны называть 'resignKeyWindow' напрямую. – ThomasW
Правильный способ скрыть окно, чтобы установить hidden
свойство YES. Чтобы удалить его из свойства UIApplication windows
, вы просто отпустите окно (в ARC вы установили все ссылки на nil).
Конечно, вы хотели бы иметь другое окно на месте в это время.
Вы не можете удалить окно из App Delegate. Однако вы можете удалить любые созданные пользователем окна.
Чтобы удалить окно, вы должны сначала предоставить замену. Таким образом, мы получаем окно по умолчанию.
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
Теперь у нас есть доступ к окну по умолчанию приложением appdelegate.window.
Теперь получите оригинал или пользовательский контроллер навигации. Назначьте себя как rootviewcontroller.
Вызов makekeyandvisible удаляет все окна и назначает окно appdelegates в качестве ключевого окна. Установите rootViewController в качестве NavigationController, который вы только что создали, и вам хорошо идти!
DEMONavigationController *demoNav = [[DEMONavigationController alloc]initWithRootViewController:self];
[appDelegate.window makeKeyAndVisible];
appDelegate.window.rootViewController = demoNav;
ThankYou!
Если у вас есть какие-либо окна, кроме окна приложения, использовать его ..
let mainWindow = UIApplication.shared.delegate?.window
mainWindow??.makeKeyAndVisible()
Можете ли вы объяснить/разработать немного больше того, что вы ДО? Поскольку вопрос не слишком ясен. Может быть, я ошибаюсь. –