2012-01-19 11 views
16

मुझे लगता है कि मुझे यह SIGABRT नहीं मिल रहा है। मेरे पास यह स्टोरीबोर्ड आईओएस एप्लीकेशन है, और स्टोरीबोर्ड में मेरे पास UITableViewController है। अब, मैं टीवीसी का एक सेल ले सकता हूं और इसे "सेग्यू" व्यू कंट्रोलर को धक्का दे सकता हूं, लेकिन अगर मुझे कुछ स्थितियों पर "सेग्यू" कार्रवाई को रोकने की ज़रूरत है तो क्या होगा? जाहिर है, आप तैयार नहीं कर सकते हैं, क्योंकि सेक्शन: प्रेषक: विधि इसके लिए अनुमति नहीं देता है, और ऐसा लगता है कि एक संक्रमण केवल तब होता है जब एक संक्रमण होने के बारे में कहा जाता है।performSegueWithIdentifier बनाम instantiateViewControllerWithIdentifier

तो मैंने अनुमान लगाया कि मैं तालिका में जा सकता हूं दृश्य: didSelectRowAtIndexPath: और प्रोग्राम को सैद्धांतिक रूप से निष्पादित करें। उपोक्त, लेकिन अभी भी ...

ठीक है, यह पता चला है कि मैंने गलत अनुमान लगाया है। या कम से कम, मैं कुछ गलत कर रहा हूँ। सबसे स्पष्ट तरीके से करना यह

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self performSegueWithIdentifier:@"TheOtherIdentifier" sender:self]; 
} 

होगा, लेकिन एक SIGABRT, जो किसी भी उपयोगी जानकारी (नहीं देता है और हाँ, मुझे यकीन है कि यह है कि लाइन है कि ऐप्लिकेशन क्रैश बनाता है हूँ, मैं के साथ पूरे ऐप्लिकेशन क्रैश डीबगर के साथ चेक किया गया :) इसके अलावा, वीसी मैं लोड करने की कोशिश कर रहा हूं पहचानकर्ता सही ढंग से सेट है, क्योंकि निम्नलिखित कोड

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"TheOtherIdentifier"]; 
    [self.navigationController pushViewController:vc animated:YES]; 
} 

"काम करता है"। कोटेशन अंक इंगित करते हैं कि यह स्पष्ट रूप से इस प्रकार का संक्रमण नहीं किया जाना चाहिए।

अब: विचार?

+0

बस स्पष्ट होने के लिए, आपने कहा कि आप गंतव्य पहचान नियंत्रक के लिए यह पहचानकर्ता सेट करते हैं। लेकिन क्या आपने स्वयं सेग्यू के लिए पहचानकर्ता सेट किया था? वह पहचानकर्ता है जिसे आपको पहले मामले में उपयोग करने की आवश्यकता है। –

+0

ठीक है, मैं उसे याद कर रहा था। आगे की टिप्पणियों के लिए टीजे के जवाब का संदर्भ लें। – Morpheu5

उत्तर

8

इस प्रयास करें:

  1. पहले कोड ब्लॉक था और दूसरे का प्रयोग करें।
  2. स्टोरीबोर्ड नियंत्रण में सेल से दूसरे दृश्य नियंत्रक को खींचें। ध्यान दें कि एक segue बनाया गया है।
  3. segue पर क्लिक करें। Segue और पहचानकर्ता "theOtherIdentifier" (निचला मामला "टी" अनुशंसित) देने के लिए विशेषताओं निरीक्षक का उपयोग करें। यह भी मानते हुए कि आप एक नेविगेशन नियंत्रक का उपयोग कर रहे हैं, "पुश" की एक सेगू शैली का चयन करें।
  4. स्टोरीबोर्ड अन्य दृश्य नियंत्रक को तुरंत चालू करेगा। सुनिश्चित करें कि आप इसे अपने कोड में नहीं कर रहे हैं।
+0

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

+0

ठीक है, क्षमा करें, मैं स्टोरीबोर्ड नियंत्रण भाग खो रहा था :) संपादित करें: Woops। दोबारा माफी चाहूंगा। मैंने एक वीसी से दूसरी तरफ सेग्यू बनाने के लिए ज़ूम आउट किया, लेकिन मुझे एहसास हुआ कि मैं इसे शीर्ष सिस्टम बार खींच कर कर सकता हूं। कोई चिंता नहीं, वैसे भी: मैं सफल हुआ :) – Morpheu5

+0

ग्रेट। मुझे खुशी है कि सभी ने काम किया। सिस्टम बार में व्यू कंट्रोलर में चयन करके सेगू बनाना मेरे लिए नया है। मैं सशर्त segue के लिए छिपा बटन बनाने के लिए प्रयोग किया जाता था। –

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