Простой ответ:
Как правило, вы хотите иметь контроллер вида для каждой xib. Если вы используете шаблон «iPad View Controller», он создаст класс контроллера и файл xib для загрузки. Однако вы можете очень легко вручную добавить класс контроллера или просто скопировать существующий класс контроллера.
Базовый класс контроллера выполняет работу по загрузке и управлению xib - вы указываете ему, что использовать, передавая имя xib базовому конструктору:
public partial class MyViewController : UIViewController
{
public MyViewController () : base ("MyXibName", null)
...
Расширенный ответ :
«nib» - это файл, содержащий сериализованные объекты пользовательского интерфейса. «Xib» - это просто XML-представление пера. Ваши xibs будут скомпилированы в nibs при сборке пакета приложения. API для загрузки пера непосредственно из пакета приложения:
NSBundle.MainBundle.LoadNib (xibName, owner);
Имя xib - это идентификатор ресурса пакета - имя файла, но без расширения.
Это загрузит перо, десериализует все объекты в нем и соединит все их выходы с объектом owner
. Это то, что вы видите как «Владелец файла» в Интерфейсном Разработчике. Вы можете установить его тип в IB, а затем подключить объекты к его выходам и действиям. Технически тип объекта-владельца, который вы используете во время выполнения, на самом деле не имеет значения, если он имеет те же именованные выходы и действия, к которым подключаются объекты в xib, и их типы совместимы.
Вы имеете большую гибкость с перьями и объектами владельца во время выполнения. Например:
- Контроллер представления может загружать разные кончики в зависимости от типа устройства, передавая разные имена кончиков в базовый конструктор. Это полезно для универсального приложения (iPhone + iPad).
- Перо может содержать много UIViews и подключать их к нескольким выходам на своем владельце, или один контроллер может явно загружать и иметь несколько перьев, если вы не хотите иметь много контроллеров.
- Разные контроллеры могут загружать один и тот же кончик, но загружать разные данные в его виджеты.
- У вас может быть базовый класс контроллеров с розетками и множество перьев, принадлежащих к разным классам контроллеров, которые подклассы могут подключаться к этим розеткам.