2012-03-24 61 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

相關問題