2010-05-25 73 views
0

一嗨,如何在下一個視圖中將文本從一個UITextfield推送到另一個UITextfield?然後回來?

我有一個的UITextField在一個視圖中,一個的UITextField在查看A. 而且我還有一個針對B,的UITextField的B查看B.

我使用導航控制器欄以切換之間的意見。 UITextFields屬性和連接的視圖A和B的插座。

在我的看法A有一個「選項」按鈕,它推動視圖B.所以,當你在文本框A中鍵入時,我想要相同的文本在Textfield B中出現。

當您編輯TextField B並且您返回查看A(通過導航欄中的「標題視圖A」按鈕)時,我希望同樣的文本重新出現在Textfield中A.

我認爲這很簡單。但我無法得到它的工作。

我想:

ViewBController *controller = [[ViewBController alloc] initWithNibName:@"ViewBController" bundle:nil]; 
controller.TextFieldA.text = TextFieldB.text 

但沒有出現在視圖B.?我怎麼回去?我不想使用NSUserdefaults,因爲我必須刪除這些值。

回答

0

由於以及ii我終於找到了。

首先,您不能將UITextFields屬性推送到另一個視圖。我必須製作一個可以推送的單獨的NSString。像這樣

BViewController *bViewController = [[BViewController alloc] initWithNibName:@"BViewController" bundle:nil]; 
    bViewController.aString = self.aTextField.text; 

在B的viewWillAppear中我把:

bTextField.text = aString; 

然後我就想了bTextField.text推回的視圖。我不得不做出一個viewWillDisappear像這樣(你也可以把它寫短):

- (void) viewWillDisappear:(BOOL)animated { 
NSArray *viewControllerArray = [self.navigationController viewControllers]; 
int parentViewControllerIndex = [viewControllerArray count] - 1; 

[[viewControllerArray objectAtIndex:parentViewControllerIndex] setBString:bTextField.text]; 

[super viewWillDisappear:animated]; 

}

最後我只好在A的viewWillAppear中補充一點:

if ([self.bString length] > 0) { 
    aTextField.text = self.bString; 
} 
0

這裏的問題可能是,當你嘗試設置textfieldAs文本很有可能textFieldA還沒有被實例化....你應該檢查看看它有...但我不會連接textFieldA通過IB,因爲用你的方法這裏的時候,烏爾觀點似乎可能reintialize其網點和清除文本,以及,我可能會programitcally設置文本框...希望這有助於

0

想想模型 - 視圖 - 控制器(MVC)NSUserDefaults的...可能是一個存儲模型的地方,但是NSString也可以。假設你使用NSString。在A &中創建它使其成爲B的一個屬性,在viewWillDisappear中的每個視圖中更新您的模型(字符串)。在ViewWilAppear中更新模型中的視圖。任務完成。

編輯: 要更新乙

的屬性

MyVC * b = [[MyVC alloc] init]; b.myProperty = theReallyImportantValueString;

然後顯示b相推或displayModalViewController

+0

確定。但是,在這種情況下,如何更新另一個視圖控制器的屬性?我想我也必須在設置屬性後立即釋放字符串。 – Chrizzz 2010-05-25 20:38:21

+0

不!一點也不。你的模型需要堅持 - 所以創造它永遠存在的頂級事物。我從你的描述中猜測'A'。在A的dealloc中釋放它(但在實踐中,只有在您退出應用程序時纔會調用它,因此它是無關緊要的)。 這真的沒有完成,所以如果它不工作,插入NSLog語句來找出被調用的內容以及按什麼順序。 A的ViewWillDisappear應該更新你的(而非簡化的)模型。 B的viewWillAppear應該讀取模型並將其寫入屏幕。然後反之亦然。我添加了一些代碼。 – Andiih 2010-05-25 22:04:08

+0

謝謝Andiih。你的回答非常有幫助。它「推動」我朝着正確的方向前進。由於完整的答案有點複雜,我會單獨發佈。 – Chrizzz 2010-05-26 08:17:20

相關問題