gpt4 book ai didi

ios - UIView 在加载 NIB 文件后立即显示?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:42 24 4
gpt4 key购买 nike

我尝试将 UIView 添加到我的应用程序中。它确实有效,但不如预期。我在我的 header 中定义了 socialActionView,并在我的 View Controller 中创建了一个@synthesize。

当用户点击一个按钮时,nib 文件被加载。我以为我必须调用 addSubview 方法来显示 View 。但即使我不这样做,它也会出现。

如果我无论如何调用 addSubView 方法,当我加载 View 并显示消息“警告:无法恢复先前选择的帧。”时应用程序崩溃。

谁能解释一下这是怎么回事?我不明白。

- (IBAction)didTapOkSocialAction:(id)sender;
{
self.socialActionView = [[[NSBundle mainBundle] loadNibNamed:@"SocialActionViewController" owner:self options:nil] objectAtIndex:0];
//[self.view addSubview:socialActionView];
}

编辑

在这种情况下,解决方案是将我的 SocialActionViewController.xib 的文件所有者设置为 ViewController.h。我还不知道如何从附加到另一个 View Controller 类的 NIB 添加 UIView,而不是加载 View 的 View Controller 。

最佳答案

您的 socialActionView 已经绑定(bind)到其父 View 中的 View 占位符。

因此:它已经存在(它的引用已经作为 subview 添加)但是在您实际加载它之前它是nil

编辑:目前还不清楚你是如何将所有东西连接到那里的,但根据你在下面添加的信息,我会大胆猜测。

试试这段代码:

- (IBAction)didTapOkSocialAction:(id)sender;
{
UIView *loadedView = [[[NSBundle mainBundle] loadNibNamed:@"SocialActionViewController" owner:self options:nil] objectAtIndex:0];

[self.view addSubview:loadedView];
}

编辑:因为您想以编程方式从 .xib 加载 View Controller ,您可以这样做(假设 View Controller 在 MyViewController.h、.m、.xib 中定义):

MyViewController *myViewController;  //as an ivar or a property in @interface


myViewController = [[ViewController alloc] initWithNibName:@"MyViewController" bundle:nil];

然后你可以添加它的 View :

[self.view addSubview: myViewController.view];

关于ios - UIView 在加载 NIB 文件后立即显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10802588/

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