我想从我的loginView控制器(txtUsername
)获取用户名(ViewController
)到SecondViewController
,以便打印消息“欢迎用户名”。我在视图控制器之间使用Segue(login_success
)。在我的SecondViewController
我NSString
(stringUsername
)中存储了我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 =“
答案 0 :(得分:1)
有几点意见:
你说:
我想从我的loginView控制器(
txtUsername
)获取用户名{ViewController
)到SecondViewController
...
在这种情况下,您的prepareForSegue
应该位于源视图控制器中,而不是目标视图控制器中。 segue.destinationViewController
为SecondViewController
,而不是ViewController
。
坦率地说,我无法将您上面引用的意图与您的代码段(看起来您试图从SecondViewController
到ViewController
进行调整)进行协调。< / p>
更新目标视图控制器时,不应尝试设置text
的{{1}}属性。 IBOutlet
根本不应尝试使用prepareForSegue
引用,因为在调用IBOutlet
时,目标的视图尚未实例化且所有prepareForSegue
引用可能是IBOutlet
。
相反,源视图控制器中的nil
应该只在目标控制器中设置prepareForSegue
属性。在NSString
属性的基础上填充text
IBOutlet
属性的责任落在目标视图控制器中NSString
。