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

标签 ios objective-c

我有一个 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/

相关文章:

ios - 如何通过延迟 iOS 上的 block 调用来避免保留周期

ios - 如何在 UICollectionViewSectionHeader 中嵌入 UICollectionView

iphone - 从坐标中获取位置名称?

ios - TableView 滚动/dequeueReusableCell 问题

具有持续时间和自动反转的 iOS 动画

ios - 如何根据对应的UIImageView的尺寸来决定1x、2x、3x的图片尺寸?

ios - 将数据保存在钥匙串(keychain)中,只能通过 Swift 3 中的 Touch ID 访问

iphone - 如何禁用部分 UISegmentedControl?

ios - viewWillAppear 与 loadView 用于构建 View 层次结构

ios - 如果存在返回什么