2012-03-24 122 views
0

这是从在其中我试图引用来自其它类(BIDDoubleComponentPickerViewController)的属性的类的代码:无法在另一视图从一个视图引用属性

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

但是,每当我试图访问变量selectedValue和selectedSuit,他们声称它们为空,当我知道值和套装在其他类中不为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

当然可以。完成。 – 2012-03-24 13:51:41

回答

2

当您创建新的视图控制器时,它不会立即加载其视图。因此,如果您初始化的代码valuesuit位于init方法中,则doublePicker仍然是nil。否则,如果该代码位于viewDidLoadloadView,那么现在还没有当您尝试访问valuesuit使用[dummyObject value];[dummyObject suit];执行


编辑:(OP的评论后)

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

BIDDoubleComponentPickerViewController *dummyObject = [BIDDoubleComponentPickerViewController new]; 

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

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

+0

代码实际上位于按钮的动作中。其他课程的代码也位于单独按钮的操作中。我确实在调试之前按下按钮。 – 2012-03-24 14:14:14

+0

你的想法当然有道理。你能否告诉我如何去取回特定的实例? – 2012-03-24 14:32:13

+0

我不能,因为这里没有足够的信息。您可以发布另一个问题,并解释如何创建不同的视图控制器,以及如何从一个视图控制器切换到另一个视图控制器,无论您是使用故事板,还是问您如何从另一个视图控制器访问一个视图控制器或如何将参数从一个传递给另一个。 – sch 2012-03-24 14:53:19

相关问题