Должен ли я использовать IB или подкласс UIView - PullRequest
1 голос
/ 10 января 2011

Итак, я разработал класс раскрывающихся кнопок.

Давайте назовем это DDButton. Я в основном экспортирую одну функцию:

-(void) addButtonWithImage:(UIImage*)image andTarget:(id)target andSelector:(SEL)selector

, который позволяет пользователю добавить еще одну кнопку в раскрывающемся списке.

Мне нужно будет использовать DDButton на разных экранах моего приложения.

Я хотел бы использовать это как:

DDButton* ddb = [[DDButton alloc] initWithFrame:rect];
[ddb addButtonWithImage....]
[ddb addButtonWithImage....]

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

Использую ли я IB и создаю заглушку UIView, которую я подключу к DDButton в Identity Pane? если да, то как именно я создаю экземпляр представления позже.

Или, Подкласс UIView? если да, то какие методы мне следует переопределить? Вы настраиваете мои кнопки в инициализаторе? в LayoutSubView? В drawRect?

Я бы хотел услышать лучший подход здесь. Спасибо!

Редактировать

Допустим, я выбрал способ IB: у меня есть главная кнопка, которую я установил независимо от addButtonWithImage () вызывает, фактически все вызовы addButtonWithImage просто «добавляют» к этой кнопке. Я хочу, чтобы основная кнопка соответствовала размеру представления, пока другие кнопки не будут добавлены, а затем представление соответствующим образом увеличится. Тем не менее, я хочу, чтобы размер вида был выбран пользователем сначала ... используя setFrame, я думаю. То есть в awakeFromNib я пока не могу рассчитывать на размер кадра (он принимает только размер xib, который я предполагаю). Так где бы я установить свою главную кнопку? LayoutSubView? setFrame? Я не уверен.

Ответы [ 2 ]

0 голосов
/ 10 января 2011

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

Переопределить drawrect: для создания любого пользовательского чертежа, который вам нужно сделать, если вы просто добавляете UIImageview или что-то и делаете позиционирование, вы можете просто переопределить initWith ...: и выполнить свои собственные инициализации.

0 голосов
/ 10 января 2011

Добавьте ваше представление к интерфейсу в IB как UIView, затем измените класс в области идентификации.Если вам нужно выполнить инициализацию в коде, используйте метод - (void) awakeFromNib.Я бы предложил настроить кнопки, когда они добавляются в addButtonWithImage ....

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