簡體   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