как привести или установить объект с идентификатором типа к другому типу, например, UIImageView или UIView - PullRequest
0 голосов
/ 08 ноября 2019

В приведенном ниже коде я перебираю записи, и они могут иметь тип UIView или UIImageView. Я хочу проверить, является ли uiComponent одним из упомянутых типов, а затем я хочу продолжить использование этого uiComponent в коде, основываясь на том, является ли это UIView или UIImageView?

Я поворачиваю приведенный ниже код, но яне может использовать объект указателя

uiComponent

После того, как он был приведен к типу ??

Пожалуйста, дайте мне знать, как набрать объект uiComponent для любого из классов UIView или UIImageView и продолжитьпрограммирование с использованием

Код

 for (id uiComponent in uiviews) {
            UIView *uiView;
            UIImage *uiImageView;

         if ([AQSViewHelper isEntryOfTypeUIView:uiComponent]) {
                uiComponent = (UIView *)uiComponent;
         }
            if ([AQSViewHelper isEntryOfTypeUIImageView:uiComponent]) {
            uiComponent = (UIImageView *)uiComponent;
        }

         if (![uiComponent isHidden]) {
            …
    ..
    …
            }

1 Ответ

1 голос
/ 08 ноября 2019

Установите свой локальный объект на основе типа, затем используйте его, если он не равен nil:

for (id uiComponent in uiviews) {
    UIView *uiView;
    UIImageView *uiImageView;

    if ([AQSViewHelper isEntryOfTypeUIView:uiComponent]) {
        uiView = (UIView *)uiComponent;
    }
    if ([AQSViewHelper isEntryOfTypeUIImageView:uiComponent]) {
        uiImageView = (UIImageView *)uiComponent;
    }

    if (uiView) {
        // do what you want because it's a UIView
        if ([uiView isHidden]) {
            // ...
        }
        // etc ...
    }
    if (uiImageView) {
        // do what you want because it's a UIView
        if ([uiImageView isHidden]) {
            // ...
        }
        // etc ...
    }
}

Или, поскольку вы уже находитесь в if блоках, вы можете сделать это там:

for (id uiComponent in uiviews) {
    if ([AQSViewHelper isEntryOfTypeUIView:uiComponent]) {
        // do what you want because it's a UIView
        UIView *uiView = (UIView *)uiComponent;
        if ([uiView isHidden]) {
            // ...
        }
        // etc ...
    }
    if ([AQSViewHelper isEntryOfTypeUIImageView:uiComponent]) {
        // do what you want because it's a UIImageView
        UIImageView *uiImageView = (UIImageView *)uiComponent;
        if ([uiImageView isHidden]) {
            // ...
        }
        // etc ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...