Програмно викликати кнопку повернення контролера навігації на iOS


84

У програмі iPhone на базі UINavigationController в методі я хотів би виконати програмний еквівалент натискання кнопки "Назад" і повернення до перегляду.

тобто автоматично натискати кнопку Вакансії, як показано тут:

Зображення контролера навігації

Чи можу я зробити загальний дзвінок для iOS або потрібна додаткова інформація?

Відповіді:


188

UINavigationController-popViewControllerAnimated:Метод 's повинен робити те, що ви хочете:

[navigationController popViewControllerAnimated:YES];

12
приголомшливо, завдяки Стіву та Нільсу. Я використовував рішення [self.navigationController popViewControllerAnimated: ТАК]; easy;)
oberbaum

це чудово працює, за винятком контролерів перегляду, доданих на uitabbar. будь-які підказки ??
вірата

1
Я додав, [self.navigationController popViewControllerAnimated:YES];але це нічого не робить, однак є попередження про те, що ця кнопка працює, що працює.
mohsin.mr

Хм, я отримую порожній екран, програму, що не реагує, та таке на консолі: "Завершення навігаційного переходу в несподіваному стані. Дерево підвидової панелі навігації може бути пошкоджене."
Курт,

24

Припускаючи, що ви насправді не хочете натискати кнопку програмно, а просто копіюєте результат натискання кнопки, ви повинні сказати навігаційному контролеру висунути поточний контролер подання.

[self.navigationController popViewControllerAnimated:YES];

Це видалить його зі стеку та поверне до попереднього контролера перегляду.


21

Свіфт 3.0

Повернутися до кореневого подання

self.navigationController?.popToRootViewController(animated: true)

Повернутися до попереднього перегляду

self.navigationController?.popViewController(animated: true)

Свіфт 2.3

Повернутися до кореневого подання

self.navigationController?.popToRootViewControllerAnimated(true)

Повернутися до попереднього перегляду

self.navigationController?.popViewControllerAnimated(true)

7

Вам слід зателефонувати

popViewControllerAnimated:

що протилежне додаванню контролерів перегляду за допомогою pushViewController:animated:


6
[self.navigationController popViewControllerAnimates:YES];

є найкращим варіантом, але якщо ви не перебуваєте в одному класі класу контролера перегляду або ваш делегат змінюється перед викликом методу кнопки "Назад", ви також можете спробувати -

спочатку потрібно визначити кнопку повернення ---

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"anyTitleForBackButton" style: UIBarButtonItemStyleBordered target: nil action: @selector(backButtonTapped)];

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

а потім у методі backButtonTapped ви можете зателефонувати -

[self.navigationController pushViewController:desiredViewController animated:YES];
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.