2014-10-07 192 views
-2

我想從我的loginView控制器(ViewController)到SecondViewController獲取用戶名(txtUsername),以便打印消息「歡迎用戶名」。我使用視圖控制器之間的Segue(login_success)。在我的SecondViewController中,我有NSStringstringUsername)來存儲我的FirstViewController的用戶名。這是我在SecondViewController代碼:在不同的視圖控制器之間傳遞數據

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    NSString *segueIdentifier = [segue identifier]; 
    if ([segueIdentifier isEqualToString:@"login_success"]) { 
     ViewController *homeController = (ViewController *)[segue destinationViewController]; 
     homeController.txtUsername.text = _stringUsername; 
    } 
} 

當我設置斷點它使輸出爲 「自我的印刷說明 - > _ stringUsername: (NSObject的)的NSObject =」

回答

1

一對夫婦的意見:

  1. 你說:

    我想要得到的用戶名(txtUsername),從我loginView控制器(ViewController)到SecondViewController ...

    在這種情況下,你的prepareForSegue應在源視圖控制器,而不是目標視圖控制器。而segue.destinationViewController將是SecondViewController,而不是ViewController

    坦率地說,我在上面引用的你的意圖與你的代碼片段(這看起來像你試圖從SecondViewControllerViewController執行segue)一致時遇到了問題。

  2. 更新目標視圖控制器時,不應嘗試設置IBOutlettext屬性。 prepareForSegue根本不應該嘗試使用IBOutlet引用,因爲當調用prepareForSegue時,目標的視圖尚未實例化,並且所有IBOutlet引用可能都是nil

    而是,源視圖控制器中的prepareForSegue應該只在目標控制器中設置NSString屬性。在NSString屬性的基礎上填充IBOutlettext屬性的責任落在目標視圖控制器中的viewDidLoad

+1

非常感謝你搶走你的時間來糾正我,因爲我是新來的。我有更多的困惑,但我會試圖弄明白這是學習的方式。再次感謝。 – Christine 2014-10-07 22:14:12

相關問題