#iphone #objective-c #ios #ipad
#iPhone #objective-c #iOS #iPad
Вопрос:
Я создаю подкласс UIView и имею элемент NSString с именем imgName; Все просмотры, добавленные в superview, являются MyCustomView;
Я делаю это:
NSArray *arr = [view subviews];
for (int x = 0; x < [arr count]; x )
{
MyCustomView *view = [arr objectAtIndex:x];
NSString *imgName = view.imgName; <-- Unrecognized selector
}
Я действительно хочу получить доступ к этому члену. Если бы я сохранил другой запущенный список имен изображений подпросмотров, это было бы проблематично, потому что мне также пришлось бы поддерживать их расположение в иерархии представлений (поскольку я хочу, чтобы иерархия представлений была такой же, как в zIndexes).
Как я могу получить строку из [просмотр подпросмотров]?
Комментарии:
1. Можете ли вы опубликовать определение класса для
MyCustomView
или, более конкретно, как вы объявляете этот элемент?
Ответ №1:
Вы должны дважды проверить, что подпредставление имеет правильный тип. Вы можете выполнить эту проверку с помощью чего-то вроде этого:
for ( int x = 0; x < [arr count]; x )
{
UIView *subView = [arr objectAtIndex:x];
if ( [subView class] == [MyCustomView class] )
{
//Perform actions on the view as needed
}
}
Скорее всего, существует подпросмотр, который не относится к вашему MyCustomView
типу, и когда он пытается выполнить приведение и получить доступ к этому члену, он не может, потому что это неподходящий тип.
РЕДАКТИРОВАТЬ: Вы упомянули, что все добавленные вами вложенные просмотры являются MyCustomView
. Я лично не стал бы доверять структуре iOS, чтобы в ней не было подпросмотров, уже встроенных в UIView
Комментарии:
1. Это была именно та проверка, которая мне была нужна. Действительно, похоже, что iOS добавляет UIView по умолчанию где-то там.