这是我尝试从其他类(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;
有人有什么想法吗?
答案 0 :(得分:2)
创建新的视图控制器时,它不会立即加载其视图。因此,如果您初始化value
和suit
的代码位于init
方法中,则doublePicker
仍为nil
。否则,如果该代码位于viewDidLoad
或loadView
,则当您尝试使用value
和suit
[dummyObject value];
和[dummyObject suit];
时,它仍然无法执行{1}}
编辑(OP评论后)
我的回答仍然正确,因为在行中:
BIDDoubleComponentPickerViewController *dummyObject = [BIDDoubleComponentPickerViewController new];
您创建的新对象dummyObject
与选择器视图可见的视图控制器不同。因此,您要查找的值value
和suit
是其他视图控制器的属性,而不是您刚刚初始化的值。
要解决您的问题,您不应创建BIDDoubleComponentPickerViewController
的新实例,而应检索包含您要查找的值的实例。