2013-04-06 18 views
6

Jestem stosunkowo nowy w rozwoju iOS. Najpierw opracowałem aplikację na Androida, a teraz przenoszę ją na iOS. Jedną z rzeczy, których nie mogę zrozumieć, jest "odejść". Jestem przyzwyczajony do metody finish() w systemie Android. Dzięki tej metodzie bieżące działanie kończy się samo, a użytkownikowi zostaje przedstawiony poprzedni ekran, który był otwarty przed otwarciem bieżącego ekranu.Odpowiednik iOS dla systemu Android()

Próbuję osiągnąć to, że ekran "tworzenia" zniknie po zapisaniu rekordu. W świecie Androida po prostu zadzwoniłbym do metody finish(), która byłaby załatwiona. Co to jest odpowiednik systemu iOS?

Próbowałem tego kodu w mojej aplikacji na iOS, mając nadzieję, że widok zostanie animowany.

[self.navigationController popToRootViewControllerAnimated:YES]; 

Edytuj: Widok został przedstawiony poniżej.

SettingsViewController *vc = [[SettingsViewController alloc] initWithNibName:@"SettingsView"]; 
controllers = [NSArray arrayWithObject:vc]; 
self.sideMenu.navigationController.viewControllers = controllers; 
[self.sideMenu setMenuState:MFSideMenuStateClosed]; 

gdzie controllers jest zdefiniowany jako takie:

NSArray *controllers = nil; 
+0

W jaki sposób kontroler widoku jest wyświetlany na ekranie? Jedynym sposobem na jej usunięcie jest cofnięcie sposobu wyświetlania. – MishieMoo

+0

Czy próbujesz wyłączyć program SettingsViewController? Gdzie chcesz się udać? Jest to jedyny kontroler widoku w stosie z kodu, który pokazałeś. –

+0

Rozwijam swoją aplikację z menu bocznym. Po załadowaniu aplikacji wyświetlany jest jeden ekran. Użytkownik ma możliwość otwarcia bocznego menu i wybrania z niego elementu menu. Kod w mojej edycji powyżej jest wykonywany, gdy użytkownik wybierze element z bocznego menu. – acedanger

Odpowiedz

14

Jak przedstawić ten kontroler View?

Czy używasz presentViewController:animated:completion:? Jeśli tak, chcesz coś takiego:

[self dismissViewControllerAnimated: YES]; 

Jeśli używasz pushViewController:animated:, nie mówimy o perspektywie modalnej. Mówisz o normalnym ViewControllerze, który wepchnąłeś na stos. Do „cofnąć” to trzeba pop kontrolera wyświetlania:

[self.navigationController popViewControllerAnimated: YES]; 
+0

Dodałem kod, którego użyłem do przedstawienia bieżącego kontrolera widoku na moje pytanie. – acedanger

1

Choć finish() i [self dismissViewControllerAnimated:YES] są podobne pod względem funkcjonalności, ale nie są one dokładnie takie same, gdy wzywamy finish() metodę w Androidzie, jesteśmy programowo mówi systemowi Android, aby całkowicie zniszczył całą aktywność z pamięci, gdy nadpisujemy wywołanie cyklu życia aktywności o wartości onDestroy() i dodajemy dziennik, a następnie logi są wyświetlane po wywołaniu finish(). onDestroy() jest również wywoływana, gdy system potrzebuje zasobów i zwalnia pamięć, kończąc działanie. Ale

[self dismissViewControllerAnimated: YES]; 

nie usuwa instancję UIViewController z pamięci, odpowiednik metody wywołania zwrotnego dla onDestroy() w iOS jest viewDidUnload(), która nie jest wywoływana na wiadomości dismissViewController. Myślę, że system IOS może zwolnić pamięć dla instancji UIViewController, gdy system potrzebuje zasobów, ale nie możemy tego zrobić programowo.

Powiązane problemy