繁体   English   中英

在prepareForSegue中设置UITextField文本属性

[英]Set UITextField text property in prepareForSegue

我在ViewController1中有一个textField。 我有一个push segue到我的ViewController2,它也有一个textField。 我需要将ViewController2中的textField.text设置为等于ViewController1中textField中的文本。 这是我的代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqual:@"ViewController2"])
    {
        ViewController2 *VCT = [segue destinationViewController];
        VCT.title = @"View Controller #2";
        VCT.textField.text = self.textField.text;
    }
}

标题制定者工作得很好。 为什么textField不起作用?

您不能在准备segue中设置UITextField (以及UILabelUITextView等任何其他组件)的文本,因为最近分配的控制器的所有视图组件尚未初始化(此时,它们都是nil ),它们只是将呈现viewController(并且它的视图已加载)。

您必须在呈现的viewController中创建NSString属性,然后,在另一个视图控制器内的某个位置(如viewDidLoad ,将textField的文本设置为此属性值。

像这样:

在viewController中将呈现另一个viewController:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"ViewController2"])
    {
        ViewController2 *vc2 = [segue destinationViewController];
        vc2.myString = self.textField.text;
    }
}

在提出的viewController里面:

- (void)viewDidLoad
{
    [super viewDidLoad];

    (...)
    self.textField.text = self.myString;
}

检查并查看“ VCT.textField ”在该点是否为零。 我怀疑你会发现它是零。

您需要通过“ @property (strong) IBOutlet UITextField * textField ”公开它,或者您需要将字符串存储在其他位置(例如“ NSString ”属性?),然后在视图完全加载时加载文本字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM