#iphone #objective-c
#iPhone #objective-c
Вопрос:
Я хочу знать, как я могу вызвать (получить доступ) вложенное представление, которое я создал с помощью IB Я использовал этот код, но без шансов :
mySubView * mysbv = [mySubView alloc];
[mysbv setNeedsDisplay:YES];
но все же я получу сообщение об ошибке компиляции с надписью undeclared mySubView, где, поскольку я создал класс mySubView и прикрепил его к окну внутри IB.
и, кстати, хорошая ли практика использовать компоненты с использованием IB или я должен создавать их программно (хотя у меня тоже есть проблемы с этим)?
Комментарии:
1. Люди, которые ставят плохую оценку, должны действительно объяснить, почему.
2. 1. В данном случае я бы сказал, что это, вероятно, английский. Но не у всех родной язык английский, поэтому он не заслуживает понижения.
Ответ №1:
Если вы пытаетесь объявить представление, а затем получить к нему доступ в Interface Builder, объявите UIView как IBOutlet в своем классе. Как только вы добавите любое представление в IB, щелкните владельцем вашего файла на представлении, которое вы хотите связать с ним.
Кроме того, если UIView является вашим пользовательским классом (в данном случае mySubView), убедитесь, что класс UIView изменен на mySubView. Это можно найти в вашем инспекторе идентификации в IB.
Ответ №2:
Использование файлов nib намного эффективнее; в целом, примеры кода, создающие элементы пользовательского интерфейса, относятся к доисторическим временам, когда Apple не поддерживала IB для iPhoneOS.
Ваш пример кода действительно не будет работать — вы никогда не сможете просто использовать alloc
сам по себе. Создайте свойство IBOutlet для вашего контроллера представления и подключите его к вашему представлению; оно будет доступно для использования с awakeFromNib
/ viewDidLoad
последующих лет.
Комментарии:
1. Я категорически не согласен с вашим первым предложением. Лично я нахожу nibs полезными только для очень простых приложений. На мой взгляд, правильный подход к использованию определяется тем, чего вы пытаетесь достичь.
2. -1 для первого оператора. Ни в коем случае файлы nib не являются более гибкими, чем программирование вручную. Хорошо для быстрой работы, но очень ограничено для профессиональной.
3. Создание кода программно происходит медленно и подвержено ошибкам. Конечно, есть случаи, когда это можно сделать, но только тогда, когда опция nib невозможна.