iOS: переработайте большой XIB-файл в несколько файлов XIB меньшего размера для ускорения

#iphone #ios #interface-builder #xib #nib

#iPhone #iOS #конструктор интерфейса #xib #перо

Вопрос:

При просмотре некоторых из WWDC2011 videos них упоминалось, что из-за большого nib files размера загрузка вашего приложения может занять некоторое время. Это не обязательно относится к моему приложению, но я чувствую nib , что оно довольно большое. Предложение в видео состояло в том, чтобы превратить этот большой nib файл в несколько меньших для быстрой загрузки.

Может быть, я что-то упускаю, но как мне разделить большой nib файл на более мелкие? Мой загрузит только один, когда он инициализируется. UIViewController nib Есть ли другой способ сделать это с несколькими файлами?

Ответ №1:

Как вы отметили, вы можете инициализировать a UIViewController с указанным кончиком, чтобы загрузить его view свойство, и это только один файл. Однако вам не нужно упаковывать все вложенные представления вашего view свойства в один и тот же файл nib. Если у вас есть некоторые подвиды, которые видны только некоторое время, рассмотрите возможность разделения их на собственные файлы nib и загрузки их по требованию с помощью UINib . Если у вас есть набор UITableViewCell подклассов или плиток для UIScrollView содержимого a, вы, вероятно, захотите иметь возможность загружать только те экземпляры view, которые вам действительно нужны, а не массивный файл, содержащий посторонние представления (например, загрузка всех ячеек вашей таблицы, когда вы используете только один из них).).

Комментарии:

1. Хорошо, использование UINib звучит как хорошая идея. Итак, если у меня есть UIView в другом файле nib, я могу просто вызвать [UINib nibWithNibName:@»DetailView» bundle:nil]; и он вернет мой объект UIView?

2. Нет. nibWithNibName:bundle: вернет объект UINib. Затем вы можете вызвать -instantiateWithOwner:options: этот экземпляр UINib, который возвращает массив всех объектов верхнего уровня, найденных в nib, и связывает любые привязки с указанным вами «владельцем». При необходимости вы можете получить объекты из своего nib из этого массива, но я предпочитаю передать владельца, который будет иметь некоторое свойство, привязанное к объекту, загруженному из nib. ( developer.apple.com/library/IOS/#documentation/UIKit/Reference /… )