2011-12-08 10 views
31

मुझे दृश्य के बीच उचित पास डेटा के साथ समस्या है लेकिन मानक तरीके से नहीं।आईओएस स्टोरीबोर्ड डेटा नेविगेशन पास कर रहा है व्यू कंट्रोलर

चित्र का वर्णन मेरी समस्या:

http://i.stack.imgur.com/0jHYC.png

मैं दो segue पहचानकर्ता से एक है और साथ performSegueWithIdentifier तो में मैं ViewController को डेटा पास करना चाहते हैं बुलाया "Firmy" या "Oddzialy" ।

पासिंग डेटा कोड:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"sLogowanieFirmy"]) { 
     FirmyVC *firmyVC = [segue destinationViewController]; 
     firmyVC.tabFirmy = self.tabFirmy; 
    } 
    if ([[segue identifier] isEqualToString:@"sLogowanieOddzialy"]) { 
     OddzialyVC *oddzialyVC = [segue destinationViewController]; 
     oddzialyVC.wybranaFirma = [self.tabFirmy objectAtIndex:0]; 
    } 
} 

समस्या विधि [segue destinationViewController] के साथ है destinationViewController क्योंकि segue के लिए NavigationViewController है।

तो डेटा पास करने और स्वतंत्र नेविगेशन नियंत्रकों के पास उचित तरीका क्या है?

+0

शायद तुम 'NSNotificationCenter' वर्ग पर एक नज़र लेना चाहते हैं। http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsnotificationcenter_Class/Reference/Reference.html – Dimme

+0

कोई और सुविधाजनक तरीका नहीं है? –

उत्तर

58

UINavigationController में topViewController नामक एक संपत्ति है जो स्टैक के शीर्ष पर दृश्य नियंत्रक देता है।

तो अपने prepareForSegue: विधि कुछ इस तरह लग सकता है ...

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"sLogowanieFirmy"]) { 
     UINavigationController *nav = [segue destinationViewController]; 
     FirmyVC *firmyVC = (FirmyVC *)nav.topViewController; 
     firmyVC.tabFirmy = self.tabFirmy; 
    } 

    // etc... 
} 
+1

यह वही है जो मैं ढूंढ रहा था। धन्यवाद! तुम मेरा समय बचाओ –

3

यहाँ यह तेजी में है:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
{  
    if (segue.identifier == "sLogowanieFirmy") { 
     let nav = segue.destinationViewController as! UINavigationController 
     let firmyVC = nav.topViewController as! FirmyVC 
     firmyVC.tabFirmy = self.tabFirmy    
    } 

    // etc... 
} 
संबंधित मुद्दे