मुझे अजीब त्रुटि है, और मुझे उम्मीद है कि कोई मेरी मदद कर सकता है। यहां कोड है जब मैं व्यू कंट्रोलर बनाता हूं और इसे नेविगेशन नियंत्रक पर दबाता हूं। समस्या यादृच्छिक चर को नए दृश्य नियंत्रक को पास कर रही है। मैंने इसे init विधि में पास करने की कोशिश की और इसे नीचे टिप्पणी की लाइन के साथ पास कर दिया।ViewDidLoad initWithNibName से पहले बुलाया जा रहा है?
MultipleBet *multipleBet = [[MultipleBet alloc] initWithMaxNumber:numbers andMaxStars:stars andRandom:self.random];
NSLog(@"RANDOM1: %d", self.random);
//[multipleBet setRandom:self.random];
UIBarButtonItem *backButton = [[[UIBarButtonItem alloc] init] autorelease];
backButton.title = @"Voltar";
self.navigationItem.backBarButtonItem = backButton;
[self.navigationController pushViewController:multipleBet animated:YES];
[multipleBet release];
हालांकि जब मैं MultipleBet की viewDidLoad में यादृच्छिक चर का उपयोग, यह हमेशा गलत है।
यहाँ MultipleBet का कोड है:
- (id)initWithMaxNumber:(int)maxNumbers andMaxStars:(int)maxStars andRandom:(BOOL)isRandom {
self = [super initWithNibName:@"MultipleBet" bundle:[NSBundle mainBundle]];
...
self.random = isRandom;
NSLog(@"RANDOM2: %d", self.random);
NSLog(@"RANDOM2.1: %d", isRandom);
return self;
}
और यहाँ viewDidLoad का कोड है:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"RANDOM2.2: %d", self.random);
}
मैं इस तरह चर और संपत्ति की घोषणा:
BOOL random;
@property (nonatomic) BOOL random;
और आउटपुट हमेशा होता है:
RANDOM2.2: 0
RANDOM2: 1
RANDOM2.1: 1
RANDOM1: 1
क्यों viewDidLoad से NSLog सभी दूसरों से पहले outputted जा रहा है? यह आखिरी होना चाहिए ... क्या यह मेरी कस्टम इनिट विधि के कारण हो सकता है? मैं [सुपर इनिट] कहता हूं, इसलिए यह कोई समस्या नहीं होनी चाहिए ...
हाँ, यह था :) init विधि में मैं [self.view addSubview: कुछ] को बुला रहा था और वह दृश्य को कॉल कर रहा था ... मैंने स्वयं को बदल दिया है। यादृच्छिक = विधि की शुरुआत के लिए यादृच्छिक है और यह मेरी समस्या हल हो गई ... मैंने सोचा था कि व्यूडिडलोड को हमेशा init के बाद बुलाया गया था;) – ffleandro
मैं हमेशा इस तरह की समस्याओं को पाने से बचने के लिए विधि की शुरुआत में * इनिट * को आवंटित करने वाले चर निर्दिष्ट करने के लिए एक बिंदु बना देता हूं। यह समस्या हल करता है, है ना? बाईं ओर स्थित चेक मार्क पर क्लिक करके उत्तर को स्वीकार के रूप में चिह्नित करें। धन्यवाद!:) – Altealice
यह मुझे लंबे समय के बाद बचाया! मैं 'CGRectGetWidth ([self.view सीमाएं] 'के साथ अपने सबव्यूव में से एक में प्रवेश कर रहा था' धन्यवाद !! – minovsky