Назначить новый UIViewController или UIView напрямую? - PullRequest
1 голос
/ 30 августа 2011

Из стандартного приложения, основанного на представлении, я обнаружил, что сгенерированный код делает это:

self.window.rootViewController = self.viewController;

Так что я так понимаю, что AppDelegate (self) имеет локальную переменную (объявленное свойство) с именем viewController, которая является подклассом UIViewController, а self.window.rootViewController указывает на этот контроллер представления.

Когда на экране нажимают кнопку, я бы хотел перейти к новому виду.

Теперь я создал новый подкласс UIViewController, скажем, abcViewController, и XIB-файл, который представляет представление. Должен ли я:

(1) заменить «viewController» на «abcViewController», чтобы он стал новым rootViewController окна нового делегата приложения

или

[self.view removeFromSuperview];
[self.parentViewController.view addSubview:abcViewController];

Должен ли я добавить / удалить представление напрямую или я должен поменять местами контроллеры представления, а затем сделать что-то, чтобы изменить представление в этом контроллере представления? Нужен ли мне также новый подкласс UIViewController для каждого представления, которое я хотел бы добавить в приложение?

Ответы [ 2 ]

3 голосов
/ 30 августа 2011

Это зависит от того, как вы хотите, чтобы это работало визуально.Хотите ли вы, чтобы пользователь мог вернуться к исходному виду из этого нового представления?Тогда вам, вероятно, следует использовать UINavigationController в качестве корневого контроллера окна.Помимо возможности вернуться к исходному виду, по умолчанию вы также получите приятный эффект анимации, который сделает его более приятным для пользователей, чем простой эффект свопинга.

Почти каждый элемент управления, который вы видите в своемПриложение является подклассом UIView - вам не нужно создавать контроллер представления для всех них.Обычно вам нужен контроллер представления для базового просмотра каждого нового «экрана».И обычно да, вы бы подкласс UIViewController или UITableViewController для каждого из этих представлений.

1 голос
/ 30 августа 2011

Делай как это.

В классе viewController на какое событие вы хотите переключить представление, используйте это,

-Сделать объект класса appDelegate, -то на этом объекте получить доступ к окну. -Сделать объект для нового просмотра -и добавить его в окно.

смотри,

    YourAppDelegate *obj=(YourAppDelegate *)[[UIApplication sharedApplication] delegate]; 

abcViewController *objAbc=[[[abcViewController alloc] initWithNibName:@"abcViewController" bundle:nil] autorelease];

    [obj.window addSubview:objAbc.view];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...