1
FluidInfo *fluidInfo = [[FluidInfo alloc]init];
UIView *info = [[[NSBundle mainBundle] loadNibNamed:@"FluidInfoSheet" owner:fluidInfo options:nil] objectAtIndex:0];

[self createFormulaPopup:info];

我有一个 .nib 文件UIView。我有一个UIView名为 '的子类FluidInfo。我使用我的函数' '使它UiView在我的内部显示为弹出窗口viewControllercreateFormulaPopup

我已将我UIView的子类设为FluidInfo. 当我创建出口和动作时,它们都正常工作。

问题是我的init功能UIView出乎意料地工作。如果我记录一些东西,那么它会与我的弹出窗口同时出现。但如果我设置了类似视图背景颜色的东西,它似乎会消失。如果我在界面生成器中设置它,它会粘住。如果我将颜色的变化附加到其中的一个动作上,UIView那么它也会起作用。但是当视图被初始化时,它似乎撤消了我以编程方式完成的所有事情。

4

2 回答 2

0

在您的代码中,您通过 FluidInfo *fluidInfo instated 您的视图控制器

 [[[NSBundle mainBundle] loadNibNamed:@"FluidInfoSheet" owner:fluidInfo options:nil]objectAtIndex:0];

请参阅此链接 https://developer.apple.com/library/ios/documentation/uikit/reference/NSBundle_UIKitAdditions/Introduction/Introduction.html

鉴于您必须在此处传递将成为您的文件所有者的所有者,您将所有者作为视图子类传递,这就是为什么它可能无法通过自我(您的视图控制器)传递,因此它会在应用程序中找到文件所有者。

  [[[NSBundle mainBundle] loadNibNamed:@"FluidInfoSheet" owner:self options:nil]objectAtIndex:0];

参考 Stack over flow 的这个链接给你很好的文件所有者描述什么在objective-c / cocoa Nib中最好地描述了“文件的所有者”?

于 2013-09-11T06:42:17.747 回答
0

好的,所以我解决了这个问题。我在 uiview 本身而不是在我的视图控制器中加载了笔尖

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];

    if (self) {
        self = [[[NSBundle mainBundle] loadNibNamed:@"FluidInfoSheet" owner:self options:nil]objectAtIndex:0];

        // Initialization code
    }
    return self;
}
于 2013-09-11T06:36:52.430 回答