我有一个 xib 文件,它是一个 View ,我已将其指定为 FooView 类。
当我分配它时:
UINib *fooViewXib = [UINib nibWithNibName:@"FooView" bundle:[NSBundle mainBundle]];
FooView *fooView = [[fooViewXib instantiateWithOwner:self options:nil] lastObject];
fooView.lolLabel.text = @"lol";
如果我再问它:
[fooView isKindOfClass:[FooView class]];
它说不...
然而,如果我 NSLog fooView 对象,它说它是一个 fooView。如果我直接 NSLog fooView 对象的类,它会显示为 FooView 类。
为什么 isKindOfClass 不能正确识别这个对象,我该怎么做?
最佳答案
而不是使用 lastObject
, 遍历数组,直到找到具有正确类的 View 。像这样做
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
这将确保您获得正确类的 View 。
关于ios - UINib 实例化的对象没有显示其正确的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17779273/