Невозможно ссылаться на свойства из одного представления в другом представлении - PullRequest
0 голосов
/ 24 марта 2012

Это код из класса, в котором я пытаюсь ссылаться на свойства из другого класса (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;

У кого-нибудь есть идеи?

1 Ответ

2 голосов
/ 24 марта 2012

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


Редактировать: (после комментария ОП)

Мой ответ по-прежнему правильный, потому что в строке:

BIDDoubleComponentPickerViewController *dummyObject = [BIDDoubleComponentPickerViewController new];

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...