2012-11-29 31 views
14
-(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"); 
     } 
    } 
} 

मैं उत्पादन की उम्मीद "होने का तत्व एक UIImageView है बर्ताव कर रही है, लेकिन यह वास्तव तत्व एक UIImageView नहीं है क्यों यह नहीं है वहाँ अन्य हैं कि ।। subviews सिर्फ एक ही है इसके अलावा, जब चलाने के लिए, छवि 100,100 में नहीं 500,500 की उम्मीद के रूप में प्रदर्शित किया जाता है,isKindOfClass का उपयोग करना:।? मुझे समझ नहीं आता क्यों इस कोड इस तरह से

+0

मैंने आईडी के बजाय UIImageView का उपयोग करने के लिए कोड को बदलने की कोशिश की, और परिणाम समान थे। –

+1

आईडी संदर्भ के रूप में इस्तेमाल किया जा सकता है। आप जो खो रहे हैं वह है कि आप गलत तरीके से KindOfClass विधि को कॉल कर रहे हैं। मेरा जवाब जांचें। –

उत्तर

44

आपकी जांच गलत है। आपको ऑब्जेक्ट पर isKindOfClass: पर ऑब्जेक्ट पर कॉल करना चाहिए।

[element isKindOfClass:[UIImageView class]] 
+0

+1। यही मुद्दा है। – iDev

+0

धन्यवाद! अब आप इसका जिक्र करते हैं, यह स्पष्ट है! मैं इसे डीबगर में देख रहा था, और डीबगर यूआईएममेज व्यू दिखा रहा था, जो वास्तव में मुझे निराशाजनक था। मैं डीबग करने के लिए कोड के गलत हिस्से को देख रहा था। एक बार फिर धन्यवाद। –

+0

स्पष्ट, लेकिन विधि का नाम उलझन में है। अंग्रेजी में, शब्द "है" पहचान का तात्पर्य है। मुझे यकीन है कि वह जगह है जहां मैं ट्रैक बंद कर दिया। विधि का नाम होना चाहिए -इस इंस्टेंसऑफ क्लास: इसके बजाय, अगर आप मुझसे पूछें। –

0

के बाद कोड का प्रयास करें

-(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(UIView *view in subviews) { 
     if ([view 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"); 
     } 
    } 
} 

तुम भी टैग मान उप विचारों की जाँच करें कर सकते हैं।।:

initially set imageView.tag=101; //anything you want 

for(UIView *subview in [view subviews]) { 
    if(subview.tag== 101)/*your subview tag value here*/ 
    { 

NSLog(@"element is a UIImageView\n"); 
    } else { 
     NSLog(@"element is NOT a UIImageView\n"); 
    } 
} 
+0

तो ऐसा इसलिए है क्योंकि मैंने इसे नहीं डाला? –

+0

कोई बात नहीं। वह काम नहीं कर रहा है। टैग विचार शायद मेरे प्रोजेक्ट के लिए काम नहीं करेगा, जब तक कि मैं सभी छवियों के लिए एक ही टैग का उपयोग नहीं करता। अज्ञात जीवनकाल वाली छवियों की अज्ञात संख्या होगी। –

+0

मैंने बस अपना जवाब संपादित किया 'अगर ([देखें isKindOfClass: [UIImageView क्लास]])' अभी जांचें। –