Показаны сообщения с ярлыком interface builder. Показать все сообщения
Показаны сообщения с ярлыком interface builder. Показать все сообщения

суббота, 4 февраля 2012 г.

О важности IBOutlet прикрепления объектов к объекту-хозяину

Очень важно, если вы решили часть рутинных операций возложить на такой удобный инструмент как Interface Builder не забывать об одном правиле. Каждый объект, который создаётся не динамически в коде (например smthObject = [[SmthClass alloc] initWith... ]), а создан с помощью Interface Builder, каждый такой объект должен иметь своего хозяина (разве что главный делегат приложения гарантированно работает по умолчанию).

То есть любой ваш объект (созданный с помощью Interface Builder) должен принадлежать кому-нибудь как IBOutlet-переменная. Я убеждался в этом уже много раз на практике. Иначе происходят падения программы при попытке заставить этот объект что-либо сделать, из-за того, что у этого объекта (если он не принадлежит никому как IBOutlet-переменная) например вызывается метод, а объект вроде не существует (раз ни к кому не принадлежит). Может быть гуру-программисты дадут более точное объяснение этому явлению...

воскресенье, 4 июля 2010 г.

Высота стандартных iPhone-контролов по умолчанию

При разработке iPhone-приложений высота контролов по умолчанию:

Status Bar: 20px
Navigation Bar: 44px
Tab Bar: 50px

Если не ошибаюсь, аналогичная высота и у iPad-контролов.

Помнить эти значения приходится каждый раз, когда вы запихиваете в UIView всякие UITableView и прочие окошки.

Всё-таки Interface Builder при некоторых своих косяках даёт экономию времени (создавать контролы руками через код иногда бывает крайне необходимо, но это в любом случае приходится дольше делать, чем делать несколько движений мышкой в Interface Builder'e - ну и кроме того, снимается ряд головняков, например таких как контроль над утечками памяти программно создаваемых контролов). Особенно я люблю Interface Builder за возможность быстро создать взаимосвязи между контролами и функциями-обработчиками (где в качестве возвращаемого типа указываем IBAction).

Так вот - в ряде случаев применение Interface Builder'а позволяет значительно упростить задачу создавать в одном Xcode-проекте приложение сразу и для iPhone и для iPad (просто для разных экранов работаете мышкой с одноимёнными xib-файлами - поверьте, получается быстрее, чем вручную писать каждый раз if-else или #ifdef ТАКОЙ_ТО_ТИП_ДЕВАЙСА).

вторник, 27 апреля 2010 г.

Как удалить badge-кружочки из TabBar вкладок

Стоит только написать хоть что-нибудь в поле Badge для TabBar в Interface Builder и после этого даже если вы удалите все символы из этого поля, вам уже не удастся избавиться от появившихся badge-кружочков (которые будут пустыми, без строк, но всё равно мозолящими глаза в случае их ненадобности).

Оказывается, можно их удалить, если открыть xib-файл в виде текста (в любимом текстовом редакторе для правки кода). Этот xib-файл есть не что иное, как xml-файл. Сохраните на всякий случай копию оригинального xib-файла. Найдите в оригинале все нужные вам строки, в которых содержится слово badge и удалите их. Если кого заинтересует, напишу сюда более подробно. Дело в том, что изначально этих строк не было, пока вы не ввели хотя бы один символ в bagde-поле, используя Interface Builder.

Постоянные читатели