2012-03-24 15 views
0

Dies ist der Code aus der Klasse, in dem ich die Eigenschaften von der anderen Klasse zu verweisen versuchen (BIDDoubleComponentPickerViewController):Unable Eigenschaften von einer Ansicht in einer anderen Ansicht referenzieren

BIDDoubleComponentPickerViewController *dummyObject = [BIDDoubleComponentPickerViewController new]; 
NSString *selectedValue = [dummyObject value]; 
NSString *selectedSuit = [dummyObject suit]; 

Jedes Mal, wenn ich versuche, Greife auf die Variablen selectedValue und selectedSuit zu und behaupte, dass sie null sind, wenn ich weiß, dass value und suit in der anderen Klasse nicht null sind. Hier ist der Code, der die Eigenschaften in BIDDoubleComponentPickerViewController setzt:

NSInteger valueRow = [doublePicker selectedRowInComponent: 
         kValueComponent]; 
NSInteger suitRow = [doublePicker selectedRowInComponent: 
         kSuitComponent]; 
value=[[NSString alloc]initWithString:[values objectAtIndex:valueRow]]; 
suit=[[NSString alloc]initWithString:[suits objectAtIndex:suitRow]]; 

Hier ist der Code für die Erklärung der Eigenschaften:

@property (strong, nonatomic) NSString *value; 
@property (strong, nonatomic) NSString *suit; 

Wer irgendwelche Ideen?

+0

Sicher kann. Erledigt. –

Antwort

2

Wenn Sie einen neuen Ansichtscontroller erstellen, wird seine Ansicht nicht sofort geladen. Wenn also der Code, in dem Sie value und suit initialisieren, sich in der init-Methode befindet, dann ist doublePicker immer noch nil. Andernfalls, wenn dieser Code in viewDidLoad oder loadView befindet, dann ist es immer noch nicht ausgeführt wird, wenn Sie versuchen, zuzugreifen value und suit mit [dummyObject value]; und [dummyObject suit];


Edit: (nach OP Kommentar)

Meine Antwort ist immer noch korrekt, weil in der Zeile:

Sie ein neues Objekt erstellen dummyObject, das sich vom Ansichtscontroller unterscheidet, bei dem die Auswahlsicht sichtbar war. Die Werte value und suit, die Sie suchen, sind Eigenschaften des anderen View-Controllers und nicht der, den Sie gerade initialisiert haben.

Um Ihr Problem zu lösen, sollten Sie keine neue Instanz von BIDDoubleComponentPickerViewController erstellen, sondern die Instanz abrufen, die die gesuchten Werte enthält.

+0

Der Code befindet sich tatsächlich innerhalb der Aktion einer Schaltfläche. Der Code für die andere Klasse befindet sich ebenfalls in der Aktion einer separaten Schaltfläche. Ich stelle sicher, dass ich den Knopf vor dem Debugging drücke. –

+0

Ihre Idee macht sicherlich Sinn. Können Sie mir einen Hinweis geben, wie ich die spezifische Instanz abrufen kann? –

+0

kann ich nicht, weil es hier nicht genügend Informationen gibt. Sie können eine andere Frage stellen und erklären, wie und wo Sie die verschiedenen View-Controller erstellt haben, wie Sie von einem zum anderen gewechselt haben, ob Sie Storyboard verwenden, ... und fragen, wie Sie auf einen View-Controller von dem anderen zugreifen können oder wie Sie können Parameter von einem zum anderen übergeben. – sch

Verwandte Themen