Настраиваемые контроллеры файлов и интерфейсный интерфейс - PullRequest
1 голос
/ 21 июля 2011

Недавно я познакомился с разработчиками для iOS от друга и начал экспериментировать со сборщиком интерфейсов и контроллерами представления. Одна вещь, которую я обнаружил, заключается в том, что при использовании кончика в сочетании с контроллером представления ваши ивары контроллеров представления быстро загрязняются представлениями, на которые вы никогда не сможете ссылаться. Я хотел бы объединить ключевые компоненты моего основного пера в несколько разных представлений. У меня есть два вопроса по этому поводу:

  1. Как создать файл пера для представления нестандартного размера (файла, который не заполняет весь экран)?
  2. Как я могу добавить вновь модульный к моему главному пиру (все классы, которые я бы создал для компонентов, были бы контроллерами представления, а не представлениями)?
  3. Предполагая, что я должен выделить и инициализировать контроллеры представления и программно добавить их в основной вид, как я могу расположить представления нестандартного размера, поскольку я уже вызвал initWithNibName:bundle:. Я не могу позвонить initWithFrame: верно?

Ответы будут очень признательны!
Спасибо,
PhpMyCoder


EDIT
Я нашел ответ на свой первый вопрос. Похоже, что в инспекторе атрибутов вашего nib-файла вы должны отключить строку состояния (изменить ее на неопределенную), чтобы включить редактирование параметров высоты и ширины в инспекторе размера. Тем не менее, я до сих пор не уверен, как добавить эти пользовательские перья и их контроллеры представления в другой перо, не кодируя их с initWithFrame: и addSubview:. Любые идеи по добавлению представления контроллера представления к пиру в IB?


РЕДАКТИРОВАТЬ 2
Добавлен вопрос 3 (или 2 в зависимости от того, как вы к этому относитесь).


РЕДАКТИРОВАТЬ 3
Кажется, я торопливо задаю вопросы сегодня. Простой вызов setFrame: будет иметь дело с размерами и позиционированием (и вы даже можете добавить его к своей функции инициализации initWithNibName:bundle:frame:). Все еще не знаете, как добавить представление (созданное пером) из контроллера представления в другое перо в Интерфейсном Разработчике. Если это возможно, я хотел бы услышать, как.

1 Ответ

1 голос
/ 22 июля 2011

Не забудьте не путать ViewControllers и Views. Они оба находятся в иерархии, и каждый ViewController имеет / контролирует "main" view (который, вероятно, имеет группы подпредставлений).

Вы не добавляете представление в перо. Перо - это механизм, который поможет вам собрать представления. (Файл NeXT Interface Builder, если мы углубимся в номенклатуру.)

Вот как вы загружаете перо:

  [[NSBundle mainBundle] loadNibNamed:@"foo" owner:self options:nil];

Обычно вы даете имя пера контроллеру, и он делает это за вас, но вы можете сделать это для. Существуют сложные и хитрые способы доступа к контенту. Ниже приведен стандартный способ сделать это.

Передаваемый вами владелец должен быть типом, объявленным в качестве владельца в этом файле пера. Некоторые выходы должны быть подключены к объектам в файле nib. После того, как вы загрузите nib-файл, они просто «будут там». Если вы назвали это дважды, он заменит первые и заменит их вторыми. (в основном безвредный, определенно бесполезный)

Так, как правило, вы подключили его до view. Теперь у вас есть представление, которое плавает в памяти и не связано с иерархией представлений приложения. Время сделать это. Вы должны взять view и выяснить, где оно принадлежит в существующей иерархии, и вызвать [someOtherView addSubview:self.view] no it, и оно появится. Да, если вы хотите явно разместить / изменить размер, вам нужно будет это сделать. Обратите внимание, что view.frame находится в системе координат суперпредставления.

...