3

Я новичок в мире iOS и начал создавать собственный код поверх шаблонного кода. Так что извините меня за очевидное.NavigationController и Modal Views

Цепочка просмотра начинается с MainWindow.xib, которая содержит объект делегирования приложения, объект окна и приложение ViewController. Я не понимаю, почему эти объекты нужны там. Но, что я понимаю, я должен упомянуть запуск ViewController в свойстве "Nib Name", чтобы инициировать мой пользовательский контроллер просмотра (называемый «EmptyViewController»). Это контроллер фиктивного представления, просто чтобы избежать сбоя в результате отсутствия действительного диспетчера представлений.

Я инициирую отдельный контроллер Modal View (MainViewController) внутри didFinishLaunchingWithOptions. код для инициирования модальный View Controller -

self.window.rootViewController = self.viewController; 
mainView = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; 
// present the viewcontroller 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:mainView]; 

[self.viewController presentModalViewController:navController animated:NO]; 

// release it, because it's retained as modalViewController 
[navController release]; 

Я не ставлю этот MainViewController внутри MainWindow.xib, как я хочу, чтобы навигация в корне MainViewController. Внутри MainViewController, я нажимаю HelpViewController, когда нажата кнопка «Справка». Но HelpViewController не показывает панель навигации. Я не понимаю, почему?

Код для толкания Панель навигации -

HelpViewController *helpVC = [[HelpViewController alloc] init]; 
[self.navigationController pushViewController:helpVC animated:YES]; 
[helpVC release]; 

Так что я хотел бы понять - 1) Почему MainWindow.xib нужен? Могу ли я удалить его? (Примечание: я попытался удалить его, но затем я получу пустой экран) 1.a) Почему все объекты/объекты приложения делегирования объектов, объекты Window Object и Application ViewController необходимы?

2) Почему HelpViewController не показывает панель навигации? 3) Еще одна вещь, которую я заметил, если я говорю self.presentingViewController, дескриптор EmptyViewController возвращается, а popViewController возвращает меня обратно в MainViewController.

Благодаря

+0

Если мой ответ помог вам Vselect и^plus, пожалуйста. –

+0

@ смысл - ваш ответ ответил на то, что я уже знал. Смотрел более точный ответ. – katch

ответ

0

Приложение Делегат просто реализует некоторые «обратных вызовов» на уровне приложения, с помощью которого IOS общается с вашим собственным кодом. В main.m вы можете увидеть, как iOS сообщается, какие из ваших классов реализуют UIApplicationDelegate. iOS создает экземпляр этого класса и вызывает эти методы делегата («обратный вызов»), когда это необходимо (например, когда приложение переходит в фоновый режим).

Окно - это то, что предоставляет iOS, ваше приложение должно сказать, что отображать на нем. И, как вы видели, это обычно делается в didFinishLaunchingWithOptions (который вызывается iOS для информирования вашего приложения, все готово для начала).

A View Controller - это класс, который обрабатывает состояния вещей, которые вы показываете в окне. Вы не показываете материал непосредственно в окне, но вместо этого используете Views. Каждый контроллер View имеет элемент View with UI.

XIB или NIB - это файл описания/компоновки UI. XIB и View связаны друг с другом; вам нужно сообщить XIB, членом которого является элемент View Controller (например, UILabel), который принадлежит элементу пользовательского интерфейса, и вы указываете XIB, какой метод View Controller вызывается на определенном событии пользовательского интерфейса (например, нажатие кнопок на кнопке).

Это основы. Я знаю, что он не отвечает на все ваши вопросы; Я предлагаю вам прочитать очень хорошую документацию Apple.Не пытайтесь сразу все понять, поскольку вещи, как вы переживаете, действительно могут показаться нелогичными в начале.