gpt4 book ai didi

iphone - 使 View (从 initWithNibName 初始化)加载其所有 subview

转载 作者:行者123 更新时间:2023-12-03 18:31:50 25 4
gpt4 key购买 nike

假设我从 Nib 加载 View Controller ,并决定在场景后面对其 subview 之一执行某些操作。稍后,我将显示此 View Controller 的 View 。

viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
[viewController.someSubview doSomething];

//later on
[mainView addSubview:viewController.view];

问题是,someSubview 对象似乎直到 View 出现才被加载,因此 doSomething 方法没有被调用。到目前为止,我的解决方法是调用:

[mainView addSubview:viewController.view];
[viewController.view removeFromSuperview];

首先初始化viewcontroller的 subview 。是否有更优雅的方法(例如 loadSubviews 方法或其他方法)来完成此任务?

最佳答案

首先,我会尝试简单地访问该属性:

[viewController view];

这将强制 View (以及 subview 和导出等)的延迟加载,这对您来说可能就足够了。默认情况下, View Controller 不会加载其 View ,直到您访问它,因此这可能就是您看到延迟的原因。

当您尝试访问 socket 属性但它实际上尚未绑定(bind)时(例如您的情况下的 someSubview),强制加载通常是解决方案。

您还可以通过添加 View 但将其隐藏来稍微改进:

viewController.view.hidden = YES;
[mainView addSubview:viewController.view];

然后,当您想要显示它时,不必调用 addSubview,只需执行以下操作:

viewController.view.hidden = NO;

我在使用 UIViewAnimationTransitionFlipFromRight 等过渡在 View 中设置动画时使用了此方法。即使强制 View 延迟加载,仍然存在明显的延迟,因此我使用它来稍微提高性能。

关于iphone - 使 View (从 initWithNibName 初始化)加载其所有 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1935526/

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