-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
imageView.image = [UIImage imageNamed:@"Sample.png"];
[self.view addSubview:imageView];
NSArray *subviews = [self.view subviews];
for(id element in subviews) {
if ([[element class] isKindOfClass:[UIImageView class]]) //check if the object is a UIImageView
{
NSLog(@"element is a UIImageView\n");
[element setCenter:CGPointMake(500., 500.)];
} else {
NSLog(@"element is NOT a UIImageView\n");
}
}
}
Spodziewałem wyjście być „elementem jest UIImageView, ale to rzeczywiście element nie jest UIImageView Dlaczego Nie dlatego, że istnieją inne .. subviews jest tylko jeden Ponadto po uruchomieniu, obraz wyświetlany jest na 100,100, a nie 500.500 jak oczekiwanoKorzystanie isKindOfClass.? Nie rozumiem, dlaczego ten kod zachowuje się w ten sposób
Próbowałem po prostu zmienić kod, aby użyć UIImageView zamiast id, a wyniki były takie same. –
id może być używany jako odniesienie. To czego brakuje, to wywołanie metody KindOfClass w niewłaściwy sposób. Sprawdź moją odpowiedź. –