Как убрать себя и суперпредставление из супер суперпредставления? - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть UIViewController классы A и B.A загружает B, используя: [A.view addSubView B.view].

B имеет панель навигации с кнопкой Назад.Я хочу вернуться к A, когда щелкну по нему, поэтому в селекторе я попытался [self.view removeFromSuperview], но он только удалил панель навигации.Затем я попытался [self.view.superview removeFromSuperview], он все еще просто удалил панель навигации.Что мне делать?

Также еще одна незначительная проблема с кнопкой «Назад»: установка заголовка.Я пробовал эти два способа, но все равно отображается «Назад».

navItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Chapter" style:UIBarButtonItemStylePlain target:self action:@selector(handleBackBarButtonItem:)];

navItem.backBarButtonItem.title = @"Chapter";

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Не думаю, что вы понимаете, как работает навигация (с UINavigationController) в iOS.Предполагая, что вы хотите анимацию, это то, что вы хотите:

  1. Настройка UINavigationController.Это можно сделать в делегате приложения (чтобы избежать утечки памяти, установите переменную экземпляра на UINavigationController *navController:

    navController = [[UINavigationController alloc] initWithRootViewController:A];
    

    Обратите внимание, что мы добавляем A в качестве нашего корневого контроллера представления.

  2. Нажмите второй контроллер представления при необходимости. Я предполагаю, что вы добавляете B.view после нажатия кнопки или чего-то еще. В реализации метода, который добавляет второй контроллер представления, запустите следующий кодвместо [A.view addSubview:B.view]. Этот метод должен быть в файле .m первого контроллера:

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

    Это также даст хороший эффект перехода.

  3. Popвторой контроллер вида из стека. С UINavigationController, красивая кнопка в форме стрелки автоматически включается в контроллер push-представления, чтобы вернуться к последнему контроллеру представления. Это означает, что вам даже не нужен код дляразрешить навигацию в обратном направлении.

Вот и все! Теперь, если вам нужно изменить заголовок кнопки назад B, сделайте это в методе A viewDidLoad:

self.navigationItem.backBarButtonItem = customBackButtonItem;
0 голосов
/ 30 ноября 2011

Вы можете получить массив подпредставлений, а затем удалить те, которые вы хотели удалить. Этот пост SO покажет вам, как удалить все подпредставления или несколько подпредставлений, используя массив подпредставлений.

...