В стандартном приложении на основе представлений я обнаружил, что сгенерированный код делает следующее:

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 для каждого представления, которое я хотел бы добавить в приложение?

1
Gapton 30 Авг 2011 в 06:18

2 ответа

Лучший ответ

Сделай так.

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

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

Посмотри это,

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

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

    [obj.window addSubview:objAbc.view];
1
Ishu 30 Авг 2011 в 04:32

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

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

3
Chaitanya Gupta 30 Авг 2011 в 02:29