首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由UINib实例化的对象没有显示其正确的类?

由UINib实例化的对象没有显示其正确的类?
EN

Stack Overflow用户
提问于 2013-07-22 10:58:45
回答 2查看 425关注 0票数 2

我有一个xib文件,它是一个视图,我已经将它指定为一个FooView类。

当我分配时:

代码语言:javascript
复制
UINib *fooViewXib = [UINib nibWithNibName:@"FooView" bundle:[NSBundle mainBundle]];
FooView *fooView = [[fooViewXib instantiateWithOwner:self options:nil] lastObject];
fooView.lolLabel.text = @"lol";

如果我问它:

代码语言:javascript
复制
[fooView isKindOfClass:[FooView class]];

它说不..。

但是,如果我对fooView对象执行NSLog操作,它就会说它是一个fooView。如果我直接NSLog fooView对象的类,它会显示为一个FooView类。

为什么isKindOfClass不能正确识别这个对象,我该如何识别?

EN

回答 2

Stack Overflow用户

发布于 2013-07-22 11:21:07

不使用lastObject,而是遍历数组,直到找到包含正确类的视图。像这样做

代码语言:javascript
复制
NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"FooView" owner:self options:nil];
FooView *view;
for (id object in nibViews)
    if ([object isKindOfClass:[FooView class])
        view = object;
// do whatever you want with view

这将确保您获得具有正确类的视图。

票数 0
EN

Stack Overflow用户

发布于 2013-07-22 11:38:29

当您可以将想要的对象连接到插座时,不需要遍历通过实例化nib创建的数组。您没有说明您的代码属于哪个类,但让我们假设它是一个视图控制器。您可以简单地在视图控制器中将fooView设为插座:

代码语言:javascript
复制
@interface MyViewController : UIViewController
...
@property (strong, nonatomic) IBOutlet FooView* fooView;
@end

在nib中将文件所有者的类型设置为MyViewController,并将foo视图连接到文件所有者的fooView outlet。现在,在视图控制器中,您只需将self作为nib的所有者传递即可:

代码语言:javascript
复制
UINib *fooViewXib = [UINib nibWithNibName:@"FooView" bundle:[NSBundle mainBundle]];
[fooViewXib instantiateWithOwner:self options:nil];

之后,fooView属性将连接到右侧视图。

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

https://stackoverflow.com/questions/17779273

复制
相关文章

相似问题

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