Почему мне кажется, что Interface Builder только мешает мне?

StackOverflow https://stackoverflow.com/questions/1632760

Вопрос

Я очень плохо знаком с Cocoa для MacOSX, но не могу не чувствовать, что постоянно борюсь с Interface Builder.

Моя текущая ситуация заключается в том, что я создаю приложение, которое будет иметь несколько пользовательских элементов управления и представлений. Я начал создавать приложение в Интерфейсном Разработчике, потому что изначально было очень легко перетаскивать вещи и помещать их в правильные места с правильными цветами и правильными правилами автоматического изменения размера. Однако пришло время начать создавать свои собственные элементы управления и представления - которые я не могу красиво представить в Интерфейсном Разработчике, не пройдя работу по созданию IBPlugin! Единственный другой вариант, который я знаю о нем, - это иметь документ Interface Builder, который включает в себя набор «пользовательских видов». повсюду только один класс менялся. Внезапно кажется бессмысленным даже беспокоиться о IB - особенно в свете того факта, что эти элементы управления и представления будут иметь такие свойства, как цвет, которые необходимо установить, - так же, как другие представления и элементы управления, уже существующие в документе IB. Итак, теперь у меня есть свойства визуализации, установленные в двух отключенных местах, и, кажется, они противостоят одному из потенциальных преимуществ IB, которое позволяет относительно легко настраивать пользовательский интерфейс приложения, не углубляясь в код.

Я также столкнулся с ситуацией, когда несколько элементов управления изменяют свойства (например, цвета) на основе данных или текущих выборов. Итак, теперь у меня есть начальные цвета по умолчанию для элемента управления, указанного в Интерфейсном Разработчике, но я должен указать управляемые данными цвета в коде? И снова Interface Builder, похоже, заставляет меня разделить некоторые настройки презентации между его миром и кодом. Я полагаю, что это можно решить с помощью сложного плагина, который знает о моих данных или состояниях, или что-то в этом роде, но мне кажется, что в конечном итоге я должен поддерживать тонну кода поддержки, существующего только для того, чтобы интерфейс Interface Builder оставался «правильным». & Quot;

Еще одна вещь, о которой я часто упоминал, это то, как легко IB позволяет вам определять привязки между компонентами. " Вы можете сделать это без написания кода! " Опять же, я могу что-то упустить, но насколько я могу судить, привязка одного свойства к другому - это одна строка кода. Действительно ли установка пары свойств в блоке в IB лучше, чем написание одной строки кода? И почему лучше указывать, что составляет логику приложения, в спецификации уровня представления?

Как я уже говорил на открытии, я довольно новичок в этом, как в Cocoa, но мне кажется, что я либо упускаю что-то очень важное о том, как использовать Interface Builder, либо он предназначен в основном для тривиальных демонстрационных приложений с высоким & Quot; вау & Quot; фактор.

Это было полезно?

Решение

Я считаю, что Interface Builder отлично подходит для получения общего макета приложения. Это также замечательно для таких вещей, как привязки (на Mac). Однако вы не сможете создать Delicious Library с помощью Interface Builder. Чем сложнее ваш интерфейс, тем больше кода вам придется писать.

Другие советы

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

И вам не нужно делать все в коде, чтобы ваш пользовательский интерфейс контролировался версией. Все мои проекты Какао живут в своем собственном git-репозитории с файлами nib / xib.

Так что дайте IB шанс. Это становится легче, чем больше вы его используете.

Джефф Ламарш (из известности о разработке для iPhone) написал отличный статья о том, почему IB является хорошим выбором для использования, даже если он не кажется правильным путем, как только вы пройдете основные уроки. Я отказался от IB по тем же причинам, что и вы, но статья вдохновила меня на продолжение работы с ним, и это действительно в конечном итоге оказалось правильным решением, даже если оно идет вразрез с тенденцией гиков не допускать слишком дырявых абстракций.

Моя первая программа для iPhone, доступная для продажи, а также моя вторая в разработке, не используют Interface Builder. Мне нравится иметь все это в коде, чтобы я мог понять, что происходит, и чтобы я мог использовать отслеживание версий для отслеживания всех изменений.

Насколько я знаю, все сводится к вопросу предпочтений. Есть книги по Какао, в которых используются оба стиля (IB и не IB).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top