gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:28:25 31 4
gpt4 key购买 nike

我有一个 UIPageViewController,其中一个 View Controller 有一个 Container View,它的父级 View Controller 将数据传递给它,以便容器可以显示动态数据。我目前有父 View 使用此 prepareForSegue 方法将数据传递到容器 View 中的 View :

//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滑动我都需要向 subview 传递不同的数据到父 View 。我还注意到 viewDidLoad 方法仅在我的父 View 中触发一次,因为 UIPageViewController 保留了其页面的状态。

每次从 UIPageViewController 滑动到父 View 时,有没有办法重新实例化(再次调用 viewDidLoad)父 View ?我认为这会使 prepareForSegue 方法触发不止一次,这是我需要它做的。或者我是否以错误的方式思考这个问题并且有更优雅的解决方案?

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

最佳答案

加载的 View 和 segue 一样只调用一次,因为你的 View 只会加载一次。您应该手动执行此操作

  • UIPageViewController 上注册代表更新
  • 插入

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

  • 但不是 viewDidLoad 调用你 child 的方法, viewWillAppearviewDidAppear因为有些代码不应该多次执行。您应该将您当前的 viewDidLoad 代码从您的 child 复制到一个新方法中,并在调用委托(delegate)方法时从父级调用此方法

关于iOS - 将数据多次从父 View 传递到容器 View 的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948800/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com