इसलिए मुझे पता है कि इस सवाल का जवाब पहले दिया गया है, लेकिन मुझे लगता है कि मेरा मुद्दा सिर्फ कुछ छोटे विवरणों की अनदेखी है। मैं स्टोरीबोर्ड का उपयोग करके अपने दृश्य नियंत्रकों के बीच डेटा पास करने की कोशिश कर रहा हूं, लेकिन एक बार जब मैं धक्का देता हूं तो मुझे दूसरे छोर पर कुछ भी नहीं मिल रहा है।

यहाँ मैं अपने seque धक्का विधि में क्या है:

if ([segue.identifier isEqualToString:@"DetailPush"]) {
    NSMutableDictionary *selectedObject = [self.userArray objectAtIndex:self.selectedIndexPath];
    PhotoStreamDetailViewController *destController = [segue destinationViewController];
    destController.label.text = selectedObject[kImage][kURL];
}
  • मैंने यह सुनिश्चित करने के लिए एक ब्रेकप्वाइंट सेट किया है कि मेरी वस्तु 'शून्य' नहीं है (पास करने से पहले डेटा है)।
  • मैंने स्टोरीबोर्ड से विवरण दृश्य नियंत्रक के लिए एक IBOutlet बनाया

शायद अन्य चीजें हैं जो मुझे जांचने की आवश्यकता है?

0
Fullmetal_Alchemist_Fan 13 नवम्बर 2015, 22:06

4 जवाब

सबसे बढ़िया उत्तर

आप ViewControllerA से ViewControllerB से सीधे लेबल पाठ सेट नहीं कर सकते।

ViewControllerB इंटरफ़ेस में एक NSString गुण बनाएँ:

@property (nonatomic) NSString *labelText;

फिर ViewController से ViewController के लिए इस स्ट्रिंग को पास करें:

PhotoStreamDetailViewController *destController = [segue destinationViewController];

destController.labelText = selectedObject[kImage][kURL];

और ViewControllerB में, यानी viewDidLoad:

label.text = self.labelText;
1
Marcos Reboucas 13 नवम्बर 2015, 19:15

जब आप अपने कोड में कुछ ऐसा सेट करने की कोशिश कर रहे हैं जो nil के बराबर है तो Iboutlets सेट नहीं किया जाता है। अपनी स्ट्रिंग को संग्रहीत करने के लिए एक सार्वजनिक संपत्ति बनाएँ, फिर अपना लेबल viewDidLoad में सेट करें।

2
beyowulf 13 नवम्बर 2015, 19:13

IBOutlets viewDidLoad तक सेट नहीं होंगे। आप अपने दृश्य नियंत्रक पर सार्वजनिक रूप से उजागर NSString के माध्यम से डेटा पास करना चाहते हैं और फिर viewDidLoad पर सेट करेंगे।

आप अधिक गहराई से स्पष्टीकरण यहां देख सकते हैं।

2
Community 23 मई 2017, 11:44

इसके अलावा आप यह कोशिश कर सकते हैं:

    PhotoStreamDetailViewController *destController = [segue destinationViewController];
    [destController loadView];
    destController.label.text = selectedObject[kImage][kURL];

इस तरह आप पाठ को पास करने के लिए NSString संपत्ति से बचते हैं।

0
glm4 13 नवम्बर 2015, 20:39