我有一个 View Controller (vc1),它有一个容器 View ,下面有一个保存按钮。容器 View 嵌入到具有静态单元格的 tableview Controller (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 ";
}
}
我正在打印“embed segue called”,但 tvc1 中的文本字段没有更新为我的文本“i got u”。我有正确的 tvc1 对象吗?
在 vc1 中实例化 tvc1:
- (IBAction)save:(id)sender {
settingsTableViewController *tvc1 = [self.storyboard instantiateViewControllerWithIdentifier:@"settingsTableView"];
NSLog(@"surl textfeild = %@",tvc1.surlTextField.text);
}
但我总是得到 null 作为输出。我输入一些文本到 surl 文本字段,然后按保存。我总是得到空值。
settingsTableViewController 是容器 View 的 TableView Controller ,我只设置了该类中的节数和行数。我是否需要使单元格出列,我不应该? ,它是一个静态表格 View 。
最佳答案
问题是您在加载 View 之前在 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);
}
关于ios - 无法访问容器 View 的 tableview Controller 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42509244/