Как я могу закрыть UIVIewController? - PullRequest
3 голосов
/ 14 февраля 2011

У меня есть MainWindowController, который я хочу закрыть при событии «touch inside» и открыть новый UIView.Код, который я использую, таков:

NewViewController *controller = [[NewViewController alloc]
initWithNibName:@"NewView" bundle:nil];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];

Но в этом случае MainWindowController не закрывается сам.

Ответы [ 3 ]

8 голосов
/ 16 апреля 2014

Попробуйте это

[self dismissViewControllerAnimated:YES completion:nil];
1 голос
/ 14 февраля 2011

В селекторе / методе, который вы вызываете при событии "touch up inside", попробуйте использовать

[self dismissViewControllerAnimated:YES completion:{
//Optional, but could be used to do something magical, once controller has been dismissed
}];
1 голос
/ 14 февраля 2011

Вы должны использовать UINavigationController для управления push и pop UIViewController. В UINavigationController вы должны определить корневой контроллер представления, дочерние контроллеры представления добавляются поверх него как слои.

вы могли бы иметь рут и добавить к нему ребенка. Когда вы нажимаете кнопку, высовываете дочерний элемент и заставляете рут толкать другого дочернего элемента.

действие будет примерно таким:

root push child1 (корень покрыт child1)

root pop child1 (root виден)

root push child2 (корень покрыт child2)

вот ссылка на документацию UINavigationController.

если вы хотите удалить UIView из UIViewController, тогда вам не нужен контроллер UINavigation. Вы можете создать 2 UIView в вашем viewController и поменять их местами при нажатии кнопки.

1) Создайте UIView для хранения поменявшихся представлений (контейнер)

2) Создайте свои UIViews, между которыми вы хотите поменяться. Поместите их в массив.

3) Подключите кнопку к действию. Этот метод должен выяснить индекс представления, которое необходимо показать, удалить все подпредставления контейнера, добавить подпредставление [viewsArray objectAtIndex: nextViewIndex] в контейнер.

...