Пользовательские инструкции UIView с IB / Xcode 4.5.1 и iOS Simulator 6.0
Я знаю, что есть несколько подобных вопросов, но я обнаружил, что большинство из них не работают с текущей версией IB / iOS или не являются полными.
Я хочу иметь пользовательский UIView, который имеет перо, но мне не удается получить это hooked up
должным образом. Я потратил несколько часов на отладку и ушел, чтобы я пошел (и, может быть, сижу в ванной). Заранее извиняюсь, если вы чувствуете, что это простая операция; Спасибо заранее за любую помощь.
Чтобы сделать это в настоящее время, я:
- Создайте пользовательские файлы представлений: File -> New -> File -> Objective-C Class, выберите тип UIView и назовите его MyView; MyView.h и MyView.m созданы
- Создайте пользовательское перо: File -> New -> File -> User Interface -> View и назовите его "cool"; cool.x ib создан
- В IB для cool.x ib зайдите в Identity Inspector и установите пользовательский класс из UIView -> MyView; Вопрос № 1 - на данный момент MyView знает, чтобы загрузить cool.x ib, когда он создается, или нужно сделать больше?
- Кроме того, в IB я выделяю владельца файла и устанавливаю для его пользовательского класса значение MyView. (? - не уверен насчет этого)
- Я хочу создать текстовую метку, поэтому я перетаскиваю UILabel на cool.x ib и создаю открытое свойство (myLabel) в MyView.h. Вопрос № 2 Нужно ли для этого настраивать класс MyView? Я думаю, что нет, поскольку это просто стандартный UILabel.
- У меня есть приложение Single View, и я бы хотел, чтобы на нем был экземпляр MyView / cool, поэтому в IB я перетаскиваю View из инспектора объектов в представление ViewController.x ib. В Инспекторе удостоверений IB я установил для класса значение MyView. Я импортирую файл MyView.h в ViewController.h и устанавливаю для него свойство в интерфейсе.
- В 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?