[英]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.