首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Nib和UIView类加载UIView

使用Nib和UIView类加载UIView
EN

Stack Overflow用户
提问于 2013-05-06 07:08:31
回答 3查看 9.3K关注 0票数 3

我试过这门课

https://github.com/autresphere/ASDepthModal

我希望它像它一样弹出,但我希望能够以编程方式设置标签,因为我需要根据日期的不同而改变。我使用的是storyboard,所以我创建了一个.xib和uiview.h和uiview.m。在我的主UIViewController中,我有:

代码语言:javascript
复制
xibContents = [[NSBundle mainBundle] loadNibNamed:@".xib" owner:self options:nil];
testView = [xibContents lastObject];

在我的.xib中,我已经将文件所有者设置为我的uiview类,这就产生了一个问题: NSUnknownKeyException当我将我的.xib中的uiiew设置为我的uiview类时,应用程序将被加载,并且我可以像应该的那样打开它,但是我不能以编程方式更改标签的状态?我完全迷失在这里了!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-19 21:55:37

真的让它起作用了。我采取了错误的方法。我发现,只需创建视图,并在单击按钮时使用背景图像和标签填充它,这会更简单。在UI设计器中做这件事很简单,但实际上这并不难。

感谢帮助我的人:)

票数 2
EN

Stack Overflow用户

发布于 2013-05-06 08:09:10

通常来说,UIViews不能访问IBOutlets。苹果公司的xibs只打算分配给UIViewControllers。

但是,您可以通过两种方式从xib加载视图:

1)创建要在UIViewController中使用的额外xib。将File的所有者设置为视图控制器,并将视图的类名设置为自定义视图类。在接口构建器中,这在“自定义类”下。您可以将视图设置为IBOutlet,当您的UIViewController加载xib并将其自身设置为所有者时,iOS将创建自定义类的一个实例(与您上面尝试的一样,但仅从控制器类中)

2)在UIView类中加载xib,并将self设置为结果对象:

代码语言:javascript
复制
- (id)init {
    self = [super initWithFrame:CGRectMake(0, 0, 1024, 352)];

    if (self) {
        NSArray* nib = [[NSBundle mainBundle] loadNibNamed:@"TCSNumberKeyPad" owner:self options:nil];
        [[nib objectAtIndex:0] setFrame:CGRectMake(0, 0, 1024, 352)];
        self = [nib objectAtIndex:0];
    }

    return self;
}

在这两种情况下,您都需要通过代码而不是IBOutlet属性来检索标签。您可以在subviews属性中找到标签:

UILabel* myLabel = [self.subviews objectAtIndex:0];

票数 3
EN

Stack Overflow用户

发布于 2013-05-06 07:13:39

文件的所有者应该是视图控制器,而不是视图本身。视图可以有到标签的插座。视图应该在nib中设置为您的自定义类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16390049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档