2011-12-23 12 views
6

पर काम नहीं कर रहा है मेरे पास दो टेबलव्यू कंट्रोलर हैं जो बीच में एक सेग्यू के साथ हैं। जब कोई उपयोगकर्ता पहले टीवीसी में किसी सेल पर क्लिक करता है तो उन्हें दूसरे टीवीसी के साथ प्रस्तुत किया जाता है। Segue modal है, एक पहचानकर्ता है जिसे "segueToLocationDetails" कहा जाता है और इसके साथ एक ऑब्जेक्ट पास करता है। आप दूसरे टीवीसी को "विवरण" पृष्ठ के रूप में कम या ज्यादा सोच सकते हैं।NavVontroller में एम्बेडेड दूसरे टीवीसी में TableViewController से PerformSegueWithIdentifier,

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

उदाहरण। मैं इसे पूरी तरह से काम कर रहा हूँ। मैं फिर आईबी में दूसरे टीवीसी को हाइलाइट करता हूं, माउस को उत्पाद पर | में एम्बेड करें | नेविगेशन नियंत्रक। अब दूसरा टीवीसी एक नव नियंत्रक में है। हालांकि सीगू अभी भी दूसरे टीवीसी को इंगित करता है। मैं segue को हटाता हूं और इसे पहले टीवीसी के सेल से नेविगेशन कंट्रोलर से दोबारा जोड़ता हूं और सुनिश्चित करता हूं कि सेग्यू को पहचानकर्ता दें। फिर से भागो, और यह टूट जाता है! त्रुटि नीचे है ...

2011-12-23 15: 30: 45.469 Project12 [5219: 11,603] - [UINavigationController setDetailsObject:]: गैर मान्यता प्राप्त चयनकर्ता उदाहरण के लिए भेजा 0x7b92ce0 2011-12-23 15 : 30: 45.471 Project12 [5219: 11,603] * कारण न आया हुआ अपवाद 'NSInvalidArgumentException', कारण करने के लिए एप्लिकेशन समाप्त: '- [UINavigationController setDetailsObject:]: गैर मान्यता प्राप्त चयनकर्ता उदाहरण 0x7b92ce0 के लिए भेजा' * पहले फेंक कॉल स्टैक: (0x16ea052 0x150ad0a 0x16ebced 0x1650f00 0x1650ce2 0x3933 0x703e1e 0x36f6d9 0x36f952 0xbf786d 0x16be966 0x16be407 0x16217c0 0 x1620db4 0x1620ccb 0x14ec879 0x14ec93e 0x2dfa9b 0x2a98 0x29f5 0x1) एक अपवाद फेंकने को समाप्त किया जाता है वर्तमान भाषा: ऑटो; वर्तमान में ऑब्जेक्टिव-सी

कुछ कोड के नीचे मदद करने के लिए समझाने की है:

AllLocations.h & AllLocations.m

AllLocations.h 

@interface AllLocations : UITableViewController 
{ 
    SQLiteDB *mySQLiteDB; 
} 
@property (nonatomic, strong) NSMutableArray *locationsArray; 



AllLocations.m 

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

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"segueToLocationDetails"]) 
    { 
     NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow]; 
     NSInteger rowNumber = selectedIndexPath.row; 

     mySQLiteDB = (SQLiteDB *) [locationsArray objectAtIndex:rowNumber]; 

     DetailsTVC *detailsTVC = [segue destinationViewController]; 

     detailsTVC.detailsObject = mySQLiteDB;   
    } 
} 

DetailsTVC.h & DetailsTVC.m (इस मास्टर तालिका है) (यह विस्तृत तालिका दृश्य है)

DetailsTVC.h 

@interface DetailsTVC : UITableViewController 

@property (nonatomic, strong) SQLiteDB *detailsObject; 


DetailsTVC.m 

@implementation SpotDetailsTVC 

@synthesize spotDetailsObject; 

नोट: मैंने सभी को छोड़ दिया वह कोड जो वास्तव में प्रश्न के लिए महत्वपूर्ण या प्रासंगिक नहीं था।

फिर से: यह पूरी तरह से काम करता है अगर segue मूल tableVeiwController से दूसरे TableViewController तक जाता है। जब मैं एक नया नियंत्रक में दूसरा टीवीसी एम्बेड करता हूं तो यह केवल तभी टूट जाता है। मुझे यह जानने की जरूरत है कि तस्वीर में एनवी कंट्रोलर के साथ यह कैसे काम करना है। अग्रिम में धन्यवाद!

उत्तर

11

DetailsTVC *detailsTVC = [segue destinationViewController];

कि लाइन सही नहीं है। चूंकि आपका दूसरा टीवीसी अब नेविगेशन नियंत्रक में एम्बेडेड है, [segue destinationViewController] अब एक UINavigationController है। यह काम करना चाहिए:

DetailsTVC *detailsTVC = [[segue destinationViewController] visibleViewController];

+1

ठीक है, धन्यवाद, हालांकि मैं अब इस चेतावनी हो रही है: file: // स्थानीय होस्ट/उपयोगकर्ताओं/मुझे/डेस्कटॉप/Project13/AllLocations।एम: चेतावनी: अर्थपूर्ण समस्या: प्रकार 'UIViewController *' – ElasticThoughts

+0

की अभिव्यक्ति के साथ 'locationDetailsTVC * __ strong' शुरू करने में असंगत सूचक प्रकार, 'prepForSegue: प्रेषक:' में यह पता लगाने के लिए कि क्या नियतिकरण है: नियंत्रक है: 'NSLog (@"% @ " , NSStringFromClass ([[segue destinationViewController] वर्ग])) –

+0

2011-12-23 16: 32: 20.741 प्रोजेक्ट 13 [5452: 11603] UINavigationController – ElasticThoughts

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