Может ли View Controller управлять более чем 1 пером? - PullRequest
3 голосов
/ 23 апреля 2010

У меня есть ВК, управляющий экраном контента, который имеет 2 режима; нормальный режим и режим редактирования.

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

Во многих ситуациях на iphone у вас есть VC, который контролирует связанный вид. Затем на нажатие кнопки или другое событие, загружается новый VC, и его вид становится видом верхнего уровня и т. д.

Но в этой ситуации у меня есть 2 режима, которые я хочу использовать одинаково ВК для, потому что они тесно связаны. Поэтому я хочу VC, который может поменять местами 2 просмотра.

Как здесь: Как загрузить UIView с помощью файла пера, созданного с помощью Interface Builder

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

NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"EditMode" owner:self options:nil];
UIView *theEditView = [nibObjects objectAtIndex:0];
self.editView = theEditView;
[self.view addSubview:theEditView];

У вторичного кончика есть выходы, подключенные к VC, как первичный кончик. Когда новый кончик загружен, розетки все подключены нормально, и все работает хорошо. К сожалению, когда это редактировать представление тогда удалено, кажется, нет никакого изящного способа соединить выходы снова в (нормальный режим) вид с исходного пера. Загрузка пера и установка выхода только одна вещь.

Итак, если вы хотите иметь виртуальный канал, который меняет 2 представления без создания нового виртуального канала, каковы варианты?

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

2) У вас есть 1 кончик для вашего VC, и вы просто скрываете / отображаете элементы, используя свойство hidden UIView и его подклассов.

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

4) Откажитесь и примите 1: 1 между VC и NIBS. Существует перо для обычного режима, перо для режима редактирования, и каждый режим имеет VC, который подклассов общего суперкласса.

В итоге я перешел к 4), и он работает, но требует изрядного количества дополнительной работы, потому что у меня есть класс модели, который я создаю в обычном режиме, а затем должен перейти в режим редактирования VC, потому что оба режима нужен доступ к модели. Я также использую NSTimer и должен запускать и останавливать таймер в каждом режиме. Именно из-за всей этой общей функциональности мне нужен был прежде всего один VC с двумя кончиками.

1 Ответ

0 голосов
/ 23 апреля 2010

Я бы просто добавил другой вид к вашему исходному пиру и подключил его к другому IBOutlet, называемому 'editView'.

@interface TestViewController : UIViewController {
    IBOutlet UIView *editView;
}
@end

alt text

Затем вы можете сделать [self.view addSubview: theEditView];всякий раз, когда вам нужно показать это.

...