添加到容器视图时未调用 ViewDidLoad

cir*_*ego 5 objective-c viewdidload ios

我在故事板文件中设置了一个容器视图,但我想在设置一些属性后以编程方式嵌入视图控制器。这是我在父 VC 的 viewDidLoad 中的代码:

_workoutVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"entryTableVC"];
_workoutView = _workoutVC.tableView;

[self addChildViewController:_workoutVC];

[_workoutVC.tableView setFrame:_container.bounds];
[_container addSubview:_workoutView];
Run Code Online (Sandbox Code Playgroud)

然而,子进程中的viewDidLoad并不是随时被调用的。当我运行模拟器时,我的容器视图是空白的。我已经在调试器中检查过我的属性都不是nil.

Ada*_*dam 0

第一次访问viewDidLoad:该属性时会调用该方法。view我假设在你的情况下view== tableView。如果不是,你就得调整loadView你孩子VC的方法了。

- (void)loadView {
    //create your table view here
    //...
    self.view = self.tableView;
}
Run Code Online (Sandbox Code Playgroud)

然后只需使用viewproperty 而不是tableView.

_workoutView = _workoutVC.view;
Run Code Online (Sandbox Code Playgroud)

编辑:

完整的代码是:

_workoutVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"entryTableVC"];
_workoutView = _workoutVC.view;

[self addChildViewController:_workoutVC];

[_workoutView setFrame:_container.bounds];
[_container addSubview:_workoutView];
Run Code Online (Sandbox Code Playgroud)