Myślałem, że to było łatwe jak [myWindow resignKeyWindow]
i [self.window makeKeyAndVisible]
, ale chyba nie ... Czy wiedzielibyście, co robić?Jak usunąć UIWindow?
Dzięki :)
Myślałem, że to było łatwe jak [myWindow resignKeyWindow]
i [self.window makeKeyAndVisible]
, ale chyba nie ... Czy wiedzielibyście, co robić?Jak usunąć UIWindow?
Dzięki :)
Nie wywoływać -resignKeyWindow
bezpośrednio, to miała być zastąpiona wykonanie kodu, gdy UIWindows zostanie usunięty. Aby usunąć stare okno, musisz utworzyć nową instancję UIWindow i ustawić ją jako -makeKeyAndVisible
, stare okno zrezygnuje ze statusu klucza. W systemie iOS 4 nawet nie będzie zbierać starego, starego, UIWindow, o ile nie masz żadnych odniesień do niego. Wykonanie tego w iOS 3.x może mieć katastrofalne skutki. Ostrzeżony.
To rzeczywiście zmienia okno, które jest keyWindow, ale nie wydaje się być usunięcie go z aplikacji.windows .... – samvermette
Podgląd niestandardowy okna jest zerowy. Po prostu ustaw to ukryte na NIE – tristan
to odpowiedź poniżej (z Nikolai Ruhe) mówi ci, jak faktycznie usunąć okno –
Mam ten sam problem, może to pomóc.
Musisz zniszczyć wszystkie silne ref przed usunięciem i dealloc okna, szczególnie rootWindowController. Myślę, że poniżej kod wystarczy usunąć dowolny element okna:
[self.window.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
self.window.rootViewController = nil;
[self.window resignKeyWindow];
[self.window removeFromSuperview];
Jak wspomniano w niektórych innych postach, nie powinieneś bezpośrednio wywoływać 'resignKeyWindow'. – ThomasW
Prawidłowy sposób ukryć okno jest ustawić właściwość hidden
na TAK. Aby usunąć ją z właściwości UIApplication o wartości windows
, właśnie zwolniłeś okno (w ARC ustawiasz wszystkie odniesienia do zera).
Oczywiście w tym momencie potrzebne jest inne okno.
Nie można usunąć okna z Delegata aplikacji. Można jednak usunąć utworzone niestandardowe okna.
Aby usunąć okno, należy najpierw dostarczyć zamiennik. Otrzymujemy domyślne okno.
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
Mamy teraz dostęp do domyślnego okna według właściwości appdelegate.window.
Teraz zdobądź oryginalny lub niestandardowy kontroler nawigacyjny. Przypisanie siebie jako kontrolera rootview.
Wywołanie makekeyandvisible usuwa wszystkie okna i przypisuje okno appdelegates jako okno kluczowe. Ustaw rootViewController jako właśnie utworzony NavigationController, a Ty jesteś gotowy do pracy!
DEMONavigationController *demoNav = [[DEMONavigationController alloc]initWithRootViewController:self];
[appDelegate.window makeKeyAndVisible];
appDelegate.window.rootViewController = demoNav;
Dziękuję!
Jeśli masz jakieś inne niż okno aplikacji okna, użyj go ..
let mainWindow = UIApplication.shared.delegate?.window
mainWindow??.makeKeyAndVisible()
można wyjaśnić/opracować trochę więcej co masz do września? Ponieważ pytanie nie jest zbyt jasne. Może się mylę. –