В своем приложении для iPhone я создал пользовательский интерфейс UIView, который использую в нескольких различных контроллерах представления для отображения некоторой информации.
Я знаком с созданием ячеек таблицы клиентов для использования в таблице, но я никогда больше не создавал настраиваемое представление.
У меня вопрос: как лучше всего загрузить это представление? Я пробовал просто разместить представление в контроллерах представления, которые я хочу, чтобы оно отображалось при использовании IB, но этого, похоже, недостаточно. Мне кажется, что если вы установите идентификатор класса для представления, оно должно загружать это представление при создании контроллера представления. Или, может быть, нет, потому что он не знает, из какого пера его взять (конечно, он находится в отдельном пике).
Поскольку это не контроллер представления, я не могу просто использовать initWithNibName. Я пробовал использовать NSBundle loadNibNamed, как и с ячейками таблицы, но это кажется ужасно большим объемом работы. Код выглядит так:
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:nil options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[MyCustomView class]]) {
self.customView = currentObject;
break;
}
}
[self.view addSubview:self.customView];
Должен быть более простой способ, не связанный с циклом. Кроме того, создание представления таким образом заставляет меня терять всю информацию из IB о том, где я на самом деле разместил представление. Он создается в точке 0,0, а это не там, где я хочу. Да, я знаю, что могу установить новый кадр, но, опять же, должен быть более простой способ. Есть ли способ сделать это через IB? Или, по крайней мере, с меньшей программной работой?