Подвиды представления iOS не распознают пользовательских классов - PullRequest
0 голосов
/ 07 ноября 2011

Я подкласс UIView и у меня есть член NSString с именем imgName;Все представления, добавленные к суперпредставлению, являются 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 Ответ

3 голосов
/ 07 ноября 2011

Вы должны дважды проверить, что подпредставление имеет правильный тип.Вы можете выполнить эту проверку следующим образом:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...