无法访问容器视图的tableview控制器元素

时间:2017-02-28 12:51:07

标签: ios objective-c uitableview uiviewcontroller

我有一个视图控制器(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。

2 个答案:

答案 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文本。