我有一个视图控制器(vc1),它有一个容器视图,下面有一个保存按钮。容器视图嵌入到具有静态单元格的tableview控制器(tvc1)中。每个单元格都有标签和文本字段。 我试图在vc1中获取tvc1中文本字段的内容。 我尝试了两种方法:
在vc1中准备segue:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSLog(@"prepare for segue called in settings view controller.");
NSString * segueName = segue.identifier;
if ([segueName isEqualToString: @"embedseguesettings"]) {
NSLog(@"embed segue called ");
settingsTableViewController *tvc1 = (settingsTableViewController *)segue.destinationViewController;
tvc1.surlTextField.text = @"i got u ";
}
}
我正在打印"嵌入segue叫做#34;但是tvc1中的文本字段没有更新我的文字"我得到了你的#34;。我有正确的tvc1对象吗?
在vc1中实例化tvc1:
- (IBAction)save:(id)sender {
settingsTableViewController *tvc1 = [self.storyboard instantiateViewControllerWithIdentifier:@"settingsTableView"];
NSLog(@"surl textfeild = %@",tvc1.surlTextField.text);
}
但我总是得到null作为输出。我键入一些文本到文本字段按一下保存。我总是得到零。
settingsTableViewController是容器视图的表视图控制器,我只设置了该类的no和no行数。我是否需要将细胞出列,我不应该? ,它是一个静态的tableview。
答案 0 :(得分:1)
问题是你在视图加载之前在tvc1中设置了textField值。
你应该在tvc1 ...
中添加一个属性@property (nonatomic, strong) NSString* someText;
然后在您的prepareForSegue
方法中,分配给someText
并保留对tvc1的引用
if ([segueName isEqualToString: @"embedseguesettings"]) {
settingsTableViewController *tvc1 = (settingsTableViewController *)segue.destinationViewController;
tvc1.someText = @"i got u ";
self.tvc1 = tvc1
}
并在你的tvc1 viewDidLoad
tvc1.surlTextField.text = self.someText
然后在你的保存方法中:
- (IBAction)save:(id)sender {
// Don't instantiate a new tvc1
NSLog(@"surl textfeild = %@",self.tvc1.someText);
}
答案 1 :(得分:1)
根据UIViewController
流程,它仍未分配出口,所以......
此时未加载@property
。
您需要设置viewDidLoad()
值并在loginPage
方法中访问该值
并相应地设置您的textFiled文本。