Как вставить несколько контроллеров представления на контроллер навигации - PullRequest
1 голос
/ 05 февраля 2012

Новичок здесь программирует мое первое приложение (сделав несколько обучающих приложений). Я использую контроллер представления под названием RootViewController в качестве контроллера навигации. Я успешно вставил другой контроллер представления поверх этого, который называется ClientListViewController, с помощью команды:

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

Сейчас я нахожусь в ClientListViewController и пытаюсь поместить в стек другой контроллер представления, называемый AddClientViewController. Я хотел бы сделать это модальным контроллером представления в форме UIModalPresentationFormSheet. Я пытаюсь использовать вариант команды выше, чтобы выдвинуть новый контроллер представления, но я не знаю, как заменить «я». Я пробовал:

[RootViewController.navigationController pushViewController:AddClientViewController animated:YES];

и ...

[[RootViewController navigationController] pushViewController:AddClientViewController animated:YES];

, а также каждая из этих комбинаций, используя маленькие 'R' для слова Root. Все еще не повезло.

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

#import "AddClientViewController.h"

Правильно ли я подхожу к этому или я должен использовать совершенно новый контроллер навигации, чтобы добавить его к?

Любые полученные указатели.

Большое спасибо

1 Ответ

3 голосов
/ 05 февраля 2012

Каждый UIViewController имеет свойство с именем navigationController.Это свойство относится к ближайшему вмещающему UINavigationController, если оно есть.Таким образом, вы можете просто сказать self.navigationController в вашем ClientListViewController.

. В iOS мы обычно пишем заглавные буквы.Похоже, AddClientViewController это имя класса.Вам нужно иметь экземпляр этого класса, чтобы поместить его в стек контроллера навигации.Примерно так:

AddClientViewController *addClientVC = [[AddClientViewController alloc] init];
[self.navigationController pushViewController:addClientViewController animated:YES];

Возможно, вам придется использовать другой метод init или установить некоторые свойства addClientVC перед его нажатием;это зависит от вашей реализации AddClientViewController.

Если вы хотите представить его модально, вы не помещаете его в стек контроллера навигации.Вместо этого вы делаете это так:

AddClientViewController *addClientVC = [[AddClientViewController alloc] init];
addClientVC.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:addClientVC animated:YES completion:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...