2013-10-24 13 views
5

कहा जा रहा है मेरे पास एक UICollectionView है जिसमें कई सेल्स शामिल हैं। मैं इन कोशिकाओं में से किसी एक पर टैप करने में सक्षम होना चाहता हूं और यह निर्धारित करने के बाद कि यह उचित कार्रवाई है, मेरे स्टोरीबोर्ड सेग्यू को अन्य दृश्य नियंत्रक के पास रखना है।readyForSegue को कभी भी

मैंने अपने स्टोरीबोर्ड में, सेगू के साथ अपना द्वितीयक दृश्य नियंत्रक बनाया है। मेरी UICollectionView उपवर्ग में, मैं निम्नलिखित ...

-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 
    return NO; // So that I can determine whether or not to perform the segue based on app logic 
} 

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 
    [collectionView deselectItemAtIndexPath:indexPath animated:YES]; 

    // Selection logic here 
    [self performSegueWithIdentifier:@"showDetailView" sender:self]; 
} 

इस वर्ग मैं भी लागू कर दिया है में क्रियान्वित किया है - (शून्य) prepareForSegue: (UIStoryboardSegue *) segue इस: (आईडी) इस मुझे सेटअप करने के लिए अनुमति देने के लिए प्रदर्शन के पहले से मेरा विवरण देखें। यह इस तरह दिखता है:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSLog(@"HELLO, WORLD!!!"); 
} 

सब कुछ क्रम में हो रहा है, लेकिन मैं लग रहा है कि prepareForSegue कभी नहीं कहा जाता है। मैंने लॉगिंग करने की कोशिश की है, ब्रेकपॉइंट्स सेट कर रहा हूं। कोई संकेत नहीं है कि इस विधि को कभी भी बुलाया जाता है। मुझे यहां क्या समझ नहीं आ रहा है? इस विधि को क्यों नहीं कहा जा रहा है? हालांकि इसमें अब एक सरल "हैलो, वर्ल्ड" कथन है, मेरे पास पहले कोड था कि मेरा विस्तार दृश्य निर्भर था और इसके परिणामस्वरूप अपवाद होगा क्योंकि विस्तार दृश्य ठीक से सेटअप नहीं किया गया था।

क्या मुझे कुछ और याद आ रहा है? मुझे कुछ करना चाहिए कि मैं वर्तमान में नहीं हूं?

उत्तर

3

PrepareForSegue कभी भी कॉल नहीं किया जाएगा यदि आप shouldPerformSegueWithIdentifier:NO सेट करते हैं।

+0

सही उत्तर के लिए धन्यवाद। – Tommy

6

आप iOS कह रहे हैं इस के साथ segue कभी नहीं करने के लिए:

-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 
    return NO; // So that I can determine whether or not to perform the segue based on app logic 
} 

हां में बदलें नहीं है और यह काम करना चाहिए। या जब आप segue चाहते हैं तो कम से कम तर्क जोड़ें YES।

+0

यदि आप मेरी didSelectItemAtIndexPath विधि में देखते हैं तो आप देखेंगे कि मैं मैन्युअल रूप से segue कर रहा हूं। – Shadowman

+1

@Shadowman क्या आपने इसे YES पर सेट करने का प्रयास किया और यह देखकर कि यह काम करता है? –

2

सुनिश्चित करें कि आप प्रोटोटाइप सेल (डायनामिक सेल के साथ) का उपयोग कर रहे हैं, तो आपने स्टोरीबोर्ड में पहचानकर्ता सेट किया है और इसे अपने प्रतिनिधि में भी उपयोग किया है। मेरे पास यह समस्या थी और इसे समझने के लिए मुझे थोड़ा सा लगा।

static NSString *cellIdent = @"prototypeCellName"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdent]; 
संबंधित मुद्दे