[英]iOS cannot set UITextField text property in UITableViewCell
[英]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
(以及UILabel
和UITextView
等任何其他組件)的文本,因為最近分配的控制器的所有視圖組件尚未初始化(此時,它們都是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.