如何在调用父控制器的 viewDidLoad 之前将数据传递给子视图控制器?

How to pass data to child view controller before invocation of parent controller's viewDidLoad?

我需要在我的应用程序启动时在容器视图中显示用户数据 运行。

我经常在父视图控制器的 viewDidLoad 方法中使用 Core Data 读取数据。我尝试通过嵌入转场使用 prepareForSegue 方法将数据发送到子视图控制器。但正如我发现的那样, prepareForSegueviewDidLoad 方法之前被调用。这意味着,prepareForSegue 没有有效数据发送到子视图控制器。

我能用它做什么?

您可以尝试在 class 中创建一个方法(该方法从数据库加载日期)并在方法 prepareForSegue 中调用该方法。 示例:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     (you method) 
     ....

}

加载数据然后在 parrentController.childViewControllers 中找到您的子控制器并将此数据发送给它。示例:

- (void)viewDidLoad {
    [super viewDidLoad];
    [self loadData];
    MyChildViewController childViewController = [self.childViewControllers firstObject];
    [childViewController setData:self.dataForChild];
    [childViewController updateInterface];
}

loadData、dataForChild、setData、updateInterface 是您的自定义方法/属性。