Пользовательские инструкции UIView с IB / Xcode 4.5.1 и iOS Simulator 6.0

Я знаю, что есть несколько подобных вопросов, но я обнаружил, что большинство из них не работают с текущей версией IB / iOS или не являются полными.

Я хочу иметь пользовательский UIView, который имеет перо, но мне не удается получить это hooked up должным образом. Я потратил несколько часов на отладку и ушел, чтобы я пошел (и, может быть, сижу в ванной). Заранее извиняюсь, если вы чувствуете, что это простая операция; Спасибо заранее за любую помощь.

Чтобы сделать это в настоящее время, я:

  1. Создайте пользовательские файлы представлений: File -> New -> File -> Objective-C Class, выберите тип UIView и назовите его MyView; MyView.h и MyView.m созданы
  2. Создайте пользовательское перо: File -> New -> File -> User Interface -> View и назовите его "cool"; cool.x ib создан
  3. В IB для cool.x ib зайдите в Identity Inspector и установите пользовательский класс из UIView -> MyView; Вопрос № 1 - на данный момент MyView знает, чтобы загрузить cool.x ib, когда он создается, или нужно сделать больше?
  4. Кроме того, в IB я выделяю владельца файла и устанавливаю для его пользовательского класса значение MyView. (? - не уверен насчет этого)
  5. Я хочу создать текстовую метку, поэтому я перетаскиваю UILabel на cool.x ib и создаю открытое свойство (myLabel) в MyView.h. Вопрос № 2 Нужно ли для этого настраивать класс MyView? Я думаю, что нет, поскольку это просто стандартный UILabel.
  6. У меня есть приложение Single View, и я бы хотел, чтобы на нем был экземпляр MyView / cool, поэтому в IB я перетаскиваю View из инспектора объектов в представление ViewController.x ib. В Инспекторе удостоверений IB я установил для класса значение MyView. Я импортирую файл MyView.h в ViewController.h и устанавливаю для него свойство в интерфейсе.
  7. В viewDidLoad ViewController.m я установил оранжевый цвет фона и установил myLabel (который заполняется Xcode, так что, похоже, он работает).

Я запускаю приложение, и backgroundColor установлен на оранжевый, но без метки, и я думаю, почему бы и нет? Являются ли какие-либо из вышеперечисленных шагов неправильными?

спасибо заранее

1 ответ

Решение

В IB для cool.xib зайдите в Identity Inspector и установите пользовательский класс из UIView -> MyView; Вопрос № 1 - на данный момент MyView знает, чтобы загрузить cool.xib, когда он создается, или нужно сделать больше?

Он знает, что ваш XIB управляется этим классом. Но для этого нужно сделать больше.

Пропустите 4-й вопрос. Это будет работать для UIViewControllerгде вы определяете, кто будет отвечать за это, с владельцем файла.

Я хочу создать текстовую метку, поэтому я перетаскиваю UILabel на cool.xib и создаю открытое свойство (myLabel) в MyView.h. Вопрос № 2 Нужно ли для этого настраивать класс MyView? Я думаю, что нет, поскольку это просто стандартный UILabel.

Если вы хотите иметь доступ к этой UILabel из вашего MyView, вы должны создать IBOutlet в вашем MyView и ссылку из корневого UIView's (это подкласс вашего MyView) к UILabel, В этом случае вы не трогаете владельца файла.

Наконец, проверьте это, чтобы правильно загрузить свой пользовательский вид => Загрузка пользовательского UIView из nib, все подпредставления, содержащиеся в nib, равны nil?

Другие вопросы по тегам