gpt4 book ai didi

ios - 为什么在使用 initWithNibName 时需要 setNeedsDisplay

转载 作者:行者123 更新时间:2023-11-28 18:22:18 24 4
gpt4 key购买 nike

我有一个名为 MSPageViewController 的自定义 UIViewController 类以及关联的 nib 文件。我有一个 IBOutlet,它是一个名为 pageImage 的 UIImageView。

现在,我想在另一个 UIViewController 中使用这个 View Controller ,它将在 UIPageViewController 中显示一系列我的自定义 MSPageViewController。所以,我使用以下代码:

//分配并初始化我的自定义 View Controller

MSPageViewController *page1 = [[MSPageViewController alloc] initWithNibName:@"MSPageViewController" bundle:nil];

//我必须调用这个,否则,我在下面设置的图像将始终为 null//为什么?我猜是因为 View 还没有被绘制,因为它还没有显示,所以我需要强制重绘——但这是我的问题。这是正确的做法吗?

[page1.view setNeedsDisplay];

//设置图片

page1.pageImage.image = [UIImage imageNamed:@"tutorialPage1.png"];

//制作我的 View Controller 数组,它需要一个数组,因为它可能是双面的

NSArray *viewController = [NSArray page1];

//传递包含我的自定义 View Controller 的数组

[self.pageController setViewControllers:viewController direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

那么我这样做对吗?我必须强制重绘,以便在我尝试分配给它们时我的导出存在吗?

最佳答案

您“需要”的不是 setNeedsDisplay 部分,而是 self.view 部分。通过访问 view 属性,您将强制 View Controller 实际加载 NIB。我想作为此的副作用,pageImage 属性也被填充(并且在您调用 self.view 之前为 nil)。

因此,只需调用 self.view; 而不是 [self.view setNeedsDisplay]; 就足够了。

关于ios - 为什么在使用 initWithNibName 时需要 setNeedsDisplay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18155142/

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