как я могу получить доступ programatillcay к вложенному представлению, которое я создал с помощью Interface Builder?

#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 невозможна.