Удалить ViewController на событие ButtonClick из суперпредставления - PullRequest
0 голосов
/ 02 сентября 2011

Я пытаюсь удалить два viewcontrollers (которые были добавлены друг на друга) одним методом.Я сделал взгляды в Interface Builder.у них всех есть свои собственные файлы .h и .m, чтобы идти с ним.

Сценарий, в котором я нахожусь:

У меня есть главное меню, в котором импортирован файл заголовка view2.В методе я добавляю второй вид поверх суперпредставления примерно так:

 view2ViewController * view2 = [[view2ViewController alloc]      initWithNibName:@"view2ViewController" bundle:nil];
 [self.view addSubview:view2.view];

, затем в представлении 2 я добавил заголовочный файл представления 3, чтобы я мог добавить представление 3 в качестве подпредставления поверх view2.у меня есть другой метод, который снова подключен к построителю интерфейса с UIButton, поэтому при нажатии кнопки вызывается метод в view2, который добавляет представление 3 сверху точно таким же образом, как это:

 view3ViewController * view3 = [[view3ViewController alloc]      initWithNibName:@"view3ViewController" bundle:nil];
  [self.view addSubview:view3.view];

Что я пытаюсьрешить: у меня есть кнопка в представлении 3, которая должна удалить представление 3 .... и затем она должна также удалить представление 2, чтобы был виден главный экран.

Как этого можно достичь?

То, что у меня есть до сих пор:

  [self.view removeFromSuperview];

Это, однако, удаляет только вид 3 ... но оставляет вид 2 на месте.

Что нужно изменить, чтобы я мог удалитьview 2 также ??

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 02 сентября 2011

На самом деле способ добавления любого вида аналогичен способу удаления этого вида.Предположим, вы добавили представление, вставив его в контроллер навигации, например

    [self.navigationController pushViewController:yourViewController animated:YES];

, затем вам нужно будет записать это в файл yourViewController.m

    //inYourViewController.m file
    [self.navigationController popViewControllerAnimated:YES];  

NEWРЕДАКТИРОВАТЬ:

Хорошо, если предположить, что вы сделали presentModalViewController, то сделайте это.

Теперь ваш второй вопрос, где вы хотите перейти к view1 вместо view2.Сделайте логическую переменную в вашем AppDelegate.Установите его, когда вы нажимаете кнопку «Готово» в View3.

    //inYourAppDelegate.h
    BOOL doneBtnClicked = NO;

    //inYourViewController3.m
    - (IBAction) doneBtnPressed : (id) sender
    {
            //your code
            yourAppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
            appDelegate.doneBtnClicked = YES;
  >>CHANGE THIS     [self.view removeFromSuperview];
    }

Теперь, в вашем представлении 2, в методе viewWillAppear

    - (void) viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
            //your code
            yourAppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
            if(appDelegate.doneBtnClicked)
            {
                     appDelegate.doneBtnClicked = NO;
     >>AND THIS      [self.view removeFromSuperview];
            } 
    }

HOWEVER, что вы хотитесделать это очень легко с помощью UINavigationController. Я предлагаю вам сделать это с помощью навигации, так как это действительно станет легко с точки зрения управления памятью, и, кроме того, Navigation Controller предназначен только для этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...