无法从另一个视图中的一个视图引用属性

时间:2012-03-24 13:31:51

标签: objective-c ios4

这是我尝试从其他类(BIDDoubleComponentPickerViewController)引用属性的类中的代码:

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

但是,每当我尝试访问变量selectedValue和selectedSuit时,当我知道value和suit在另一个类中不为null时,他们声称它们是null。以下是在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 个答案:

答案 0 :(得分:2)

创建新的视图控制器时,它不会立即加载其视图。因此,如果您初始化valuesuit的代码位于init方法中,则doublePicker仍为nil。否则,如果该代码位于viewDidLoadloadView,则当您尝试使用valuesuit [dummyObject value];[dummyObject suit];时,它仍然无法执行{1}}


编辑(OP评论后)

我的回答仍然正确,因为在行中:

BIDDoubleComponentPickerViewController *dummyObject = [BIDDoubleComponentPickerViewController new];

您创建的新对象dummyObject与选择器视图可见的视图控制器不同。因此,您要查找的值valuesuit是其他视图控制器的属性,而不是您刚刚初始化的值。

要解决您的问题,您不应创建BIDDoubleComponentPickerViewController的新实例,而应检索包含您要查找的值的实例。