Обмен между UIViews в одном UIViewController - PullRequest
1 голос
/ 05 января 2010

Я все еще нахожусь в iPhone SDK, я следовал некоторым хорошим учебникам, но сейчас пытаюсь найти несколько простых решений.

Сейчас я хочу запустить простое приложение, которое будет использовать тот же UIViewController.

Я создал несколько представлений в Интерфейсном Разработчике и дал им уникальные имена в Инспекторе (представление Идентификационных данных - Идентификатор Интерфейсного Разработчика).

Предполагая, что я поместил кнопку и написал действие, вызываемое при нажатии кнопки. Мой простой вопрос в xcode, как мне программно вызвать одно из других представлений?

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

Ответы [ 5 ]

3 голосов
/ 05 января 2010

Ваш контроллер представления имеет свойство view.

Возможно, у вас есть два подпредставления этого свойства view. Давайте назовем эти IBOutlet UIView * свойства subviewA и subviewB.

Если они вставлены по порядку, вы можете поменять их местами, просто вызвав метод -bringSubviewToFront: для свойства view контроллера представления:

[self.view bringSubviewToFront:subviewB];

Аналогично, чтобы вывести subviewA обратно на фронт:

[self.view bringSubviewToFront:subviewA];

Если вы хотите, вы также можете анимировать свойство frame подпредставлений, чтобы перемещать их происхождение относительно друг друга, перемещать их внутрь и наружу, а также анимировать исчезновение и другие свойства представления. Это немного больше работы, но есть хороший ответ по переполнению стека здесь по теме.

3 голосов
/ 05 января 2010

Я бы предложил вам использовать несколько контроллеров представления при попытке управления несколькими представлениями. Оберните их в UINavigationController, чтобы сделать вашу жизнь проще.

С учетом сказанного вы хотите создать IBOutlets в своем главном контроллере и подключить каждый из них к одному из ваших представлений. Затем, когда вы будете готовы, вы можете

[view1 removeFromSuperview];
[self.view addSubview: view2];

Обратите внимание, это предполагает, что вы используете третий, отдельный вид в качестве основного вида вашего контроллера.

2 голосов
/ 05 января 2010

Я также настоятельно рекомендую книгу Apress «Начало разработки iPhone3».

Я только что реализовал нечто подобное для использования с сегментированным элементом управления. Я поместил один поверх другого в подпредставлении, и сегментированное управляющее действие устанавливает view1.hidden = YES; view2.hidden = НЕТ; и наоборот в ответ на изменение состояния управления.

Возможно, вы захотите проверить контроллер панели вкладок в Интерфейсном Разработчике, поскольку он автоматически переключит представления для вас без кода вообще, по крайней мере, в простом случае, когда вы хотите заменить представление размером с экран другим экраном размерный вид, и у каждого есть свои контроллеры вида.

0 голосов
/ 05 января 2010

Книга, начинающая разработку iphone3 Дейвом и Джеффом, имеет хороший урок об этом. Вам нужно создать 2 подпредставления вашего основного viewcontroller и вызывать их отдельно.

0 голосов
/ 05 января 2010

На его лице это немного странно. Вообще говоря, это будет проще всего, если 1 view == 1 controller.

Представления, которые вы пытаетесь добавить к вспомогательным представлениям (например, элементы управления, которые будут добавлены к основному виду), или это полноэкранные представления, которые заменят существующее представление, когда пользователь нажимает кнопку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...