iOS - 将数据从父视图多次传递到容器视图的视图
我有一个UIPageViewController
,其中一个View Controller
s有一个Container View
,其父View Controller
将数据传递给它,以便容器可以显示动态数据。我现在有将数据传递到视图的容器视图中使用此prepareForSegue
方法父视图:iOS - 将数据从父视图多次传递到容器视图的视图
//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
保留了其页面的状态。
是否有办法重新实例化(再次调用viewDidLoad)父视图,每次它从UIPageViewController
滑动到?我在想这会使prepareForSegue
方法不止一次触发,我需要这样做。或者我想这是错误的方式,并有一个更优雅的解决方案?
任何帮助或建议,将不胜感激。谢谢。
视图加载只会被调用一次,因为您的视图将只加载一次。你应该对委托updades手动做到这一点通过
- 寄存器的
UIPageViewController
-
impelemt
- (void)pageViewController:(UIPageViewController * nonnull)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> * nonnull)pendingViewControllers
接收这些更新 呼叫的方法对你的孩子但不的
viewDidLoad
,viewWillAppear
或viewDidAppear
,因为存在不应执行多次的代码。您应该复制您当前的viewDidLoad代码,你的孩子到一个新的方法和调用此方法从父当代表方法被调用
对不起,不提这一点,但我的'UIPageViewController'已经将数据传递到父在向父视图滑动时查看。我尝试通过[storyboard instantiateViewControllerWithIdentifier]设置子视图的父类视图控制器中的类变量,但这不起作用。基本上,我不明白如何在不执行'prepareForSegue'的情况下访问容器视图内的视图控制器。 – Rafi
通过设置子视图控制器的类变量,我的意思是设置.h文件中声明的属性变量。 – Rafi
instantiateViewControllerWithIdentifier将创建该viewController的新实例 - 这不会更改现有的一个。您只需在您的prepareForSegue方法中存储对父(或子)的引用 –