Хотя это немного тихо ...
Я много раз пытался делать все только программно. Это сложно, но возможно.
Обновление :
Я опубликовал еще один вопрос для этой конкретной проблемы: NSOutlineView на основе представления без NIB? , а теперь
Я считаю, что все можно сделать программным способом, но это невероятно сложно без консультации с инженерами Apple из-за отсутствия информации или примеров.
Ниже аргумент может быть не по теме, но я хотел бы отметить, почему я настоятельно предпочитаю программным способом.
Я также предпочитаю программный способ. Поскольку
- Инструмент статического макета не может обрабатывать что-либо динамическое.
- Трудно воспроизвести одно и то же состояние пользовательского интерфейса на нескольких NIB. Все скрыто или скрыто. Вам нужно посетить все панели, чтобы найти параметры. В такой работе очень легко ошибиться - ошибка дружелюбна.
- Управлять согласованным состоянием сложно. Потому что воспроизвести такой же вид сложно.
- Автоматизация невозможна. Вы не можете создать автоматически сгенерированную форму ввода.
- Переадресация параметров, таких как переменный размер элемента, выбранный пользователем, невозможна.
- Нацеливание маленькой точки намного сложнее, чем нажатие клавиш размером с палец в фиксированном месте - забавно, что это серьезная проблема юзабилити для разработчиков!
- ИБ иногда винты. Это означает, что он компилируется и все еще работает, но когда я открываю исходный код, он выглядит испорченным, и дополнительное редактирование становится невозможным. (возможно, вы этого еще не испытали, но если файл XIB становится сложным, это должно произойти)
- Это сериализация на основе изображений. Концепция хорошая. Но проблема в том, что image-base only . IB не сохраняет исходный код для чистой загрузки путем воспроизведения исходного кода. Чистая загрузка очень важна, чтобы гарантировать определенное рабочее состояние. Также мы не можем исправить ошибки в исходном коде. Ошибки будут просто складываться бесконечно. Это основная причина, почему мы не можем воспроизвести состояние равно (не похож на) в IB.
Конечно, эти вещи можно решить с помощью постобработки пользовательского интерфейса NIB, но если нам придется все заново настраивать , то сначала нет смысла использовать IB.
С помощью текстового кода легко воспроизвести то же состояние - просто скопируйте код. Также легко проверить и исправить неправильную часть - потому что у нас есть полный контроль. Но в IB у нас нет контроля над сложными деталями.
IB не может быть окончательным решением. Это похоже на Photoshop, но даже Photoshop предлагает возможность создания текстовых сценариев. GUI - это движущаяся программа, а не статичное изображение или графика. Подход IB абсолютно неверен даже для визуального редактирования GUI. Если вы один из тех, кто читает Apple, читайте это, прошу полностью удалить зависимость от IB как можно скорее.