2013-02-19 41 views
0

我有兩個類,Step1和Step2。 Step1包含一個名爲wrp的文本框。當用戶在步驟1中輸入一個數字時,我希望能夠在步驟2中使用它。以下是我已經嘗試(這是第二步的代碼):來自第一類的值不在第二類

int AdditionalDays; 

Step1ViewController *wrp1 = [Step1ViewController new]; 
UITextField *wrp = [wrp1 wrp]; 
AdditionalDays = [wrp.text intValue]; 

TotalTotal.text = [[NSString alloc] initWithFormat:@"%i", AdditionalDays]; 

的應用程序不會引發錯誤消息,但在步驟1中WRP用戶輸入的號碼在第二步被忽略。我不知道它爲什麼不起作用。有什麼建議麼?

+0

原因是您正在使用該「新」語句創建Step1ViewController的新實例。這與您更改文本字段的實例不同。 – rdelmar 2013-02-19 03:12:05

回答

0

在行Step1ViewController *wrp1 = [Step1ViewController new];中,您正在創建Step1ViewController的新實例。你需要的是獲取用戶輸入文本的原始Step1ViewController的引用。

要做到這一點,您可能會在Step2ViewController中創建一個屬性,您可以在其中傳遞Step1ViewController,或者更好,用戶輸入的值。

所以在你Step2ViewController類的頭,添加屬性如下:

@property (assign) int additionalDays; 

然後,當您創建並將其顯示在屏幕上的Step2ViewController,將此屬性設置爲用戶輸入的值,這樣:

Step2ViewController *controller = [Step2ViewController new]; 
controller.additionalDays = [wrp.text intValue]; 
// push the controller on a UINavigationController or something 
1

因爲你創建一個新的Step1ViewController

0

的原因,這種情況正在發生的是,在第二步,你說:

Step1ViewController *wrp1 = [Step1ViewController new]; 
UITextField *wrp = [wrp1 wrp]; 

不幸的是,這是不是做你想要做的事。你的應用程序不知道你在做什麼,所以代碼實際上在做什麼「請創建一個全新的Step1,並創建一個全新的TextField,然後給我這個全新的空TextField的價值」。

而不是在Step2內部並向後工作以獲取TextField,嘗試在Step1內部並將該值傳遞給Step2。

+0

感謝您的回覆。我會如何去做這件事?我如何留在Step1並將值傳遞給Step2? (對不起,我是objective-c的新手,到目前爲止我只使用單視圖應用程序)。 – 2013-02-19 03:16:32

+0

這取決於你如何轉換以及如何獲得對Step2的引用。 Ahti提供了一個例子。 – 2013-02-19 03:18:08

相關問題