iOS - 多次将数据从父视图传递到容器视图的视图

iOS - Pass Data Multiple Times From Parent View Into Container View's View

我有一个 UIPageViewController,它的一个 View Controller 有一个 Container View,它的父 View Controller 将数据传递给它,这样容器就可以显示动态数据.我目前有父视图使用此 prepareForSegue 方法将数据传递到容器视图中的视图:

//In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    NSLog(@"CALLED PREPARE FOR SEGUE");
    if ([segue.identifier isEqualToString:@"viewEmbed"]) {
        //pass data
    }
}

但是,这个prepareForSegue方法只调用了一次(注意我的NSLog调试语句),但是每次UIPageViewController滑动到父视图我都需要向子视图传递不同的数据.我还注意到 viewDidLoad 方法在我的父视图中仅触发一次,因为 UIPageViewController 保留了其页面的状态。

有没有办法在每次从 UIPageViewController 滑动到父视图时重新实例化(再次调用 viewDidLoad)父视图?我认为这会使 prepareForSegue 方法多次触发,这是我需要它做的。还是我想错了,有更优雅的解决方案?

如有任何帮助或建议,我们将不胜感激。谢谢。

加载的视图仅调用一次,因为您的视图将仅加载一次,因此 segue 也是如此。您应该通过

手动执行此操作
  • UIPageViewController
  • 上注册代表更新
  • 推动

    - (void)pageViewController:(UIPageViewController * nonnull)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> * nonnull)pendingViewControllers 接收这些更新

  • 对您调用方法 child 但不 viewDidLoadviewWillAppearviewDidAppear因为有些代码不应该多次执行。您应该将当前的 viewDidLoad 代码从 child 复制到一个新方法中,并在调用委托方法时从 parent 调用此方法