2014-05-19 4 views
5

मैं आईओएस के लिए नया हूं। मैं एक परियोजना पर काम कर रहा हूं लेकिन इस त्रुटि पर फंस गया हूं।आईओएस: नेस्टेड पुश एनीमेशन के परिणामस्वरूप दूषित नेविगेशन बार

मूल रूप से नीचे दिया गया कोड एक पंक्ति को क्लिक करने पर एक नया xib लोड करना है, यदि विवरण निर्दिष्ट करने के लिए कथन का उपयोग किया जाता है तो एक विशिष्ट पंक्ति क्लिक की जाती है।

if (#something) { 
    UIViewController *controller = [[NSClassFromString(@"abcd") alloc] initWithNibName:@"abcd" bundle:nil]; 
    [self.navigationController pushViewController:controller animated:YES]; 
} else { 
    methodsViewController.r = [sel objectForKey:@"cvb"]; 
    methodsViewController.m = [sel objectForKey:@"bnm"]; 
    #adding controller 
    [self.navigationController pushViewController:controller animated:NO]; 
} 

समस्या यह है कि यह नया पृष्ठ पर जाता है जब मैं एक पंक्ति पर क्लिक करें, लेकिन जब मैं नेविगेशन पट्टी में वापस बटन पर क्लिक करें, पिछले पृष्ठ लोड नहीं करता है, लेकिन इसके बजाय एक काले पेज से पता चलता है। लॉग में यह त्रुटि दिखाती है: नेस्टेड पुश एनीमेशन दूषित नेविगेशन बार में परिणाम हो सकता है, एक अप्रत्याशित स्थिति में एक नेविगेशन संक्रमण को समाप्त करना। नेविगेशन बार सबव्यू पेड़ दूषित हो सकता है।

मैंने सभी समान उत्तर खोजे लेकिन समाधान नहीं मिला। मदद की सराहना की जाएगी।

धन्यवाद अग्रिम

उत्तर

4

में आप स्टोरीबोर्ड में एक Segue जो जब एक तालिका पंक्ति चयन किया जाता है चलाता है हो सकता है। जब आप एक पंक्ति का चयन करते हैं तो आप मैन्युअल रूप से नियंत्रक को भी दबाते हैं जो आपके द्वारा वर्णित त्रुटि होती है। आपको स्टोरीबोर्ड से सेगू को हटा देना चाहिए।

संपादित करें: अधिक विवरण:

मैं तुम्हें एक स्टोरीबोर्ड (डिजाइन विंडो में एक से अधिक दृश्य नियंत्रक) का उपयोग मान। यदि आप इसका उपयोग नहीं करते हैं, तो मैं गलत ट्रैक पर हूं। उदाहरण के लिए अपनी परियोजनाओं में से एक से स्क्रीनशॉट लेने:

Storyboard screenshot

आप नियंत्रण-घसीटा "पंक्ति" से सही पर दृश्य नियंत्रक करने के लिए, आप एक segue बनाई गई है। यह संभावना है कि जब आप बाएं व्यू कंट्रोलर में टेबलव्यू में एक पंक्ति का चयन करते हैं तो यह सेग्यू ट्रिगर होता है। यदि आपने एक मानक प्रोजेक्ट का उपयोग किया है, तो ऐसा सेग्यू पहले से मौजूद हो सकता है और आपने इसे स्वयं नहीं बनाया है।

जब आप पंक्ति चुनते हैं तो सेगू आग "स्वचालित रूप से" होती है। जब आप मैन्युअल रूप से कोड में दृश्य नियंत्रकों को धक्का देते हैं, तो आप "दूसरा पुश" का कारण बन सकते हैं जो नेविगेशन नियंत्रक को परेशान करता है।

आप दृश्यों के बीच या उस दौर आइकन पर मोटी रेखा पर क्लिक करके और हटाएं दबाकर सेगू को हटा सकते हैं।


आप एक segue जब एक पंक्ति का चयन किया गया, जो स्वत: ट्रिगर नहीं करता जरूरत है, तो आप नियंत्रित खींचें लक्ष्य दृश्य करने के लिए है कि पीला आइकन से यह कर सकते हैं। एक मेनू प्रकट होना चाहिए और आप "मैनुअल" के तहत विकल्पों में से एक का चयन करेंगे। तब segue मैन्युअल ट्रिगर किया जाना आवश्यक है जो आप के साथ कोड में करना होगा:

[self performSegueWithIdentifier:@"SegueId" sender:self]; 

आप स्टोरीबोर्ड में गोल segue आइकन पर क्लिक करते हैं, तो आप इस क्षेत्र में गुण निरीक्षक में उपयोगिताओं विंडो में एक पहचानकर्ता सेट कर सकते हैं "पहचानकर्ता"। वह पहचानकर्ता उपरोक्त कोड लाइन में उपयोग की जाने वाली स्ट्रिंग है।

+0

मैं आईओएस के लिए नया हूँ क्या आप अधिक विस्तृत बता सकते हैं? – George

+0

@ जॉर्जस्क I ने उत्तर में अधिक जानकारी दी।छवि होस्टिंग साइट में कुछ हिचकी लगती है - क्या छवि कुछ मिनटों में दिखाई दे सकती है –

1

मैं ब्रेक डालने से भूलकर इस के साथ पकड़ा गया; एक मामले के बाद: एक स्विच() कथन में। प्रत्येक मामले: एक [स्वयं प्रदर्शन SegueWithIdentifier था: ... मैं अगले मामले में गिर रहा था और इन Segue कलाकारों में से 2 निष्पादित कर रहा था।

संबंधित मुद्दे