2012-03-24 1 views
0

Это код из класса, в течение которого я пытаюсь ссылаться на свойства из другого класса (BIDDoubleComponentPickerViewController):Невозможно ссылаться на свойства с одного взгляда в другой точке зрения

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

Однако всякий раз, когда я пытаюсь доступ к переменным selectedValue и selectedSuit, они утверждают, что они являются нулевыми, когда я знаю, что значение и иск не являются нулевыми в пределах другого класса. Вот код, который устанавливает свойства в BIDDoubleComponentPickerViewController:

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

Вот код для объявления свойств:

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

Кто-нибудь есть какие-нибудь идеи?

+0

Sure can. Готово. –

ответ

2

Когда вы создаете новый контроллер вида, он не загружает свое представление сразу. Поэтому, если код, в котором вы инициализируете value и suit, находится в методе init, то doublePicker по-прежнему nil. В противном случае, если этот код находится в viewDidLoad или loadView, то он по-прежнему не выполняется при попытке доступа value и suit с помощью [dummyObject value]; и [dummyObject suit];


Edit: (После того, как комментарий ФП в)

Мой ответ по-прежнему верен, потому что в строке:

BIDDoubleComponentPickerViewController *dummyObject = [BIDDoubleComponentPickerViewController new]; 

вы создаете новый объект dummyObject, который отличается от контроллера вида, где вид сбоку был видимым. Таким образом, значения value и suit, которые вы ищете, являются свойствами другого контроллера представления, а не только того, который вы только что инициализировали.

Чтобы решить вашу проблему, вам не следует создавать новый экземпляр BIDDoubleComponentPickerViewController, но получить экземпляр, который содержит значения, которые вы ищете.

+0

Код фактически расположен внутри действия кнопки. Код для другого класса также находится внутри действия отдельной кнопки. Я обязательно задержу кнопку перед отладкой. –

+0

Ваша идея, безусловно, имеет смысл. Не могли бы вы дать мне понять, как найти конкретный экземпляр? –

+0

Я не могу, потому что здесь информации недостаточно. Вы можете отправить еще один вопрос и объяснить, как и где вы создали разные контроллеры представлений, как вы переключались с одного на другой, используете ли вы раскадровку ... И спросите, как вы можете получить доступ к одному контроллеру представления от другого или как вы можете передавать параметры от одного к другому. – sch

Смежные вопросы