2011-10-29 7 views
25

मैं स्टोरीबोर्ड का उपयोग करके ios5 में एक ऐप बना रहा हूं। मेरे पास एक नेविगेशन नियंत्रक में एम्बेडेड एक टेबलव्यू कंट्रोलर है और जब आप tableviewcontroller में सेल्स पर क्लिक करते हैं तो उस सेल विषय के बारे में कुछ विवरण एक विस्तृत दृश्य में पारित किया जाना चाहिए। मैं टेबलव्यू और विस्तार दृश्य को पॉप्युलेट करने के लिए एक प्लिस्ट का उपयोग करता हूं। मैंने स्टोरीबोर्ड का उपयोग किए बिना यह ठीक किया है लेकिन स्टोरीबोर्ड का उपयोग कैसे करना सीखना चाहता हूं। मेरे पास tableviewcontroller से मेरे विस्तार दृश्य पर जा रहा है।विस्तृत करने के लिए seque ios5 storyboard uitableview में डेटा कैसे पास करें

seque के लिए मेरे कोड है:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"DetailViewControllerSeque"]) 
    { DetailViewController *detailViewController = [segue destinationViewController]; 
     NSString *path = [[NSBundle mainBundle] bundlePath]; 
     NSString *finalPath = [path stringByAppendingPathComponent:@"questList.plist"]; 
     NSArray *tempArray = [finalPath valueForKey:@"description"]; 
     NSString *descriptionString = [tempArray valueForKey:@"description"]; 
     detailViewController.detailDescriptionText.text = descriptionString;  
    } 
} 

किसी भी मदद के लिए धन्यवाद।

+4

आपका प्रश्न क्या है आयात करने के लिए मत भूलना? –

उत्तर

0

मुझे एक ही समस्या मिली और अभी तक स्टोरीबोर्ड के साथ हल नहीं किया है। हालांकि, मुझे लगता है कि segue सेल पर शुरू होना चाहिए, पूरे tableviewcontroller नहीं। यदि आप प्रोटोटाइप कोशिकाओं का उपयोग करते हैं, तो यह काम कर सकता है - लेकिन मुझे कोड-निर्मित सेल प्रकारों के बारे में पता नहीं है। इस विषय पर भी किसी भी मदद की सराहना करेंगे।

संपादित करें: http://kurrytran.blogspot.com/2011/10/ios-5-storyboard-and.html पर ट्यूटोरियल से पता चलता है कि कोई सेग्यू समाधान मौजूद नहीं है और आपको अभी भी कोड में विस्तार से देखने के लिए संक्रमण करना है। मुझे नहीं पता कि यह कितना सही है, लेकिन मैं इसे तब तक करूँगा जब तक कि कोई मुझे शुद्ध स्टोरीबोर्डिंग/सेगु समाधान नहीं दिखाता;)।

12

मुझे वही समस्या मिली, रे वेंडरलिच ट्यूटोरियल के अनुवर्ती हिस्सों को मिला और पाया कि आपको टेबल सेल और Ctrl-Drag को अपने व्यू कंट्रोलर में चुनने की आवश्यकता है। फिर पर didSelectRowAtINdexPath पर कॉल करें।

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

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
     NSLog(@"prepareForSegue: %@", segue.identifier );  
     if ([segue.identifier isEqualToString:@"mySegueId"]) 
     { 
      DetailController *detailController = segue.destinationViewController; 
      detailController.delegate = (id)self; 
      detailController.selected = selectedRow; 
     } 
} 
+0

धन्यवाद, यह वही है जो मैं चाहता था! यहां एक त्रुटि है नियंत्रक नियंत्रक, मुझे संपादित करने नहीं देगा या मैं इसे स्वयं ठीक कर दूंगा। –

+0

दोस्त आपको धन्यवाद। – SampathKumar

+0

दोनों उत्तरों ने मेरी मदद की, लेकिन मुझे आश्चर्य हुआ कि मुझे इसकी भी आवश्यकता है। मैंने सोचा था कि ऐप्पल इस तरह कार्यान्वित होगा कि अगले दृश्य के साथ कोशिकाओं को कनेक्ट करने के लिए पर्याप्त होगा, यह बताने के बिना कि कौन सी सेगू प्रदर्शन करने के लिए .... वैसे भी, यह काम करता है। – Heckscheibe

67

मुझे एक ही समस्या थी (आईओएस 5 के साथ अनुभव की कमी से)।

यह पता चला है कि आईओएस 5 एसडीके के साथ एक उदाहरण ऐप है जिसमें एक तालिका दृश्य है जो टेबल सेल टैप किए जाने पर सेग का उपयोग करता है: "सरल ड्रिल डाउन"।

https://web.archive.org/web/20130513140140/http://developer.apple.com:80/library/ios/#samplecode/SimpleDrillDown/Introduction/Intro.html

आप तालिका सेल में segue सेट और यह स्टोरीबोर्ड फ़ाइल में एक नाम देना है। [self performSegueWithIdentifier:@"mySegueId" sender:self];

आप NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow]; इस्तेमाल कर सकते हैं आपके चयनित जानकारी पाने के लिए अपने - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{...} समारोह में,:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    /* 
    When a row is selected, the segue creates the detail view controller as the destination. 
    Set the detail view controller's detail item to the item associated with the selected row. 
    */ 
    if ([[segue identifier] isEqualToString:@"ShowSelectedPlay"]) { 

     NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow]; 
     DetailViewController *detailViewController = [segue destinationViewController]; 
     detailViewController.play = [dataController objectInListAtIndex:selectedRowIndex.row]; 
    } 
} 
+0

इस शानदार उत्तर के लिए धन्यवाद! (+1) – filou

+0

धन्यवाद कई बार।कई घंटों के लिए इस के साथ अटक गया। धन्यवाद! – Patrick

+3

इस उत्तर को सही होने के रूप में स्वीकार करने की आवश्यकता है। – dbarros

0

इस तरह

प्रयास करें

पहला नाम आपका segue तो फिर

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 


    if([segue.identifier isEqualToString:@"yourSegueName"]){ 

     DetailViewController * detailViewController =segue.destinationViewController; 
     detailViewController =[self.yourTableViewDataArray objectAtIndex:[self.yourTableView indexPathForSelectedRow].row]; 

    } 

} 

(विस्तार देखने के लिए tableview सेल से) अपने SecondViewController/DetailViewController

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