在下面的代码中,我遍历条目,它们可能是UIView或UIImageView类型。我想检查uiComponent是否为上述类型之一,然后我要根据以下代码继续使用该uiComponent是UIView还是UIImageView?
我死掉了下面的代码,但是我不能使用指针对象
uiComponent
键入后?
[请让我知道如何在UIView或UIImageView类中键入uiComponent对象,然后继续使用它进行编程
代码
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]) {
…
..
…
}
根据类型设置本地对象,如果不是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 ...
}
}