#iphone #ios4 #uinavigationcontroller #presentmodalviewcontroller
#iPhone #ios4 #uinavigationcontroller #presentmodalviewcontroller
Вопрос:
Я хочу знать различия между
[self presentModalViewController:controller animated:YES];
и
[self.navigationController pushViewController:controller animated:YES];
Я использовал оба, но до сих пор не знаю или не заметил разницы. когда следует использовать один из них?
Спасибо..
Комментарии:
1. Краткое изложение документации Apple для разработчиков: Чаще всего приложения используют контроллеры модальных представлений в качестве временного прерывания для получения ключевой информации от пользователя. Контроллеры навигации используются для управления представлением иерархических данных. Или ваш вопрос «Что происходит за кулисами?»
2. итак, могу ли я сказать, что если я хочу отобразить представление, отличное от текущего, и вернуться к текущему представлению, тогда я должен использовать presentModalViewController?
3. Если отличается, означает вопрос типа «что вы хотите сделать с этим изображением? -> загрузить -> удалить -> отменить» и после этого действия вы возвращаетесь к своему изображению, тогда да.
Ответ №1:
Основное различие :
pushViewController
работает только в навигационных контроллерах
presentModalViewController
работает для всех контроллеров просмотра
NavigationController — это ваш экземпляр UINavigationController
, который используется всеми контроллерами в вашем навигационном стеке ( UIViewController
).
Ответ №2:
Представление модального представления представляет представление поверх другого представления. Вы выполняете их, как правило, для «задач», которые необходимо запускать и завершать автономным способом. Подробнее о модальных представлениях читайте в руководствах Apple для разработчиков.
Передача представления на контроллер навигации отличается там, где логически необходима навигация в приложении. Скажем, таблица детализации, как в приложении настроек iDevices, где есть основные настройки, затем вы переходите к дополнительным настройкам и т.д.
Каковы бы ни были ваши вопросы, если они носят концептуальный и общий характер, я бы настоятельно посоветовал вам поискать в Google «Руководство по программированию X», которое приведет вас к правильному руководству Apple по программированию 🙂 X = view controller в вашем случае
Ответ №3:
если базовый класс имеет свой собственный NavigationController, тогда вы можете написать:
[self.navigationController pushViewController:objMyViewController animated:YES];
если ваш базовый класс имеет только UIViewController, используйте:
MyViewController * objMyViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:objMyViewController];
navController.navigationItem.leftBarButtonItem = nil; // make nil if you want
// to use it in next View
[self presentModalViewController:navController animated:YES];
теперь у MyViewController есть навигация, поэтому вы можете — Нажать — на другой ViewController, написав функцию, как показано ниже, в MyViewController.
-(IBAction)btnNext_click {
SecondViewController * objSecondViewController = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:objSecondViewController animated:YES];
}
Комментарии:
1. но второе представление появится за контроллером модального представления