Как использовать разные виды / экраны / xibs в MonoTouch? - PullRequest
1 голос
/ 09 февраля 2012

Я создал приложение ipad для одного просмотра, используя MonoTouch. Я хочу создать больше экранов / представлений для приложения. Поэтому я добавил новый вид ipad в текущее решение. когда я делаю это, xib добавляется только к решению (нет соответствующего файла .cs, который есть у контроллеров представления). Я разработал xib в IB, но не знаю, как добавить его в уже существующий контроллер представления.

Надеюсь, я прояснил ситуацию, поэтому не могли бы вы сказать мне, как действовать.

1 Ответ

1 голос
/ 10 февраля 2012

Простой ответ:

Как правило, вы хотите иметь контроллер вида для каждой 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 и подключать их к нескольким выходам на своем владельце, или один контроллер может явно загружать и иметь несколько перьев, если вы не хотите иметь много контроллеров.
  • Разные контроллеры могут загружать один и тот же кончик, но загружать разные данные в его виджеты.
  • У вас может быть базовый класс контроллеров с розетками и множество перьев, принадлежащих к разным классам контроллеров, которые подклассы могут подключаться к этим розеткам.
...