美文网首页iOS干货
iOS中xib加载xib问题

iOS中xib加载xib问题

作者: 张qiaoyi | 来源:发表于2019-02-21 17:34 被阅读0次

由于业务中有重复的view所以我打算抽出来复用,为了简便我用了xib(B),然后直接在xib(A)中使用B。运行发现空白一片。断点发现B初始化了,但是B里面的资源没有初始化。

几番度娘终于解决:

 需要在B中的.m文件中重写 initWithCode:(NSCoder*)aDecoder 方法,本意上A加载B无法直接加载到B的xib资源,所以我们在归档的方法中手动的去加载这个资源,

"一般对于这种需求,我们会选择在 init(coder:) 中加载目标 nib 然后将它作为 subview 添加到目标 view 中。"

那么重点来了, 很多人提到说在归档方法中会死循环,确实在loadnib方法中也会调用到归档方法, 所以这里要特别注意一下, 在B的xib文件中,关联头文件很重要, 只需在File's Owner 关联类, 而在view上是不需要关联的,所以这个xib有什么属性也是在File's Owner 上来关联。

xib(B)

@interface SPTNWSContentLabelView()

@property (nonatomic, strong) SPTNWSContentLabelView *customView;

@property (nonatomic, weak) IBOutlet UILabel*showLabel;  //标签

@property (nonatomic, weak) IBOutlet UILabel *authorNameLabel; //作者

@property(weak,nonatomic)IBOutletNSLayoutConstraint*authorNameLabelLeading;

@property (nonatomic, weak) IBOutlet NSLayoutConstraint *timeLabelLeading;

@end

@implementationSPTNWSContentLabelView

- (instancetype)initWithCoder:(NSCoder*)aDecoder {

    if(self= [superinitWithCoder:aDecoder]) {

        _customView = [[SPTNWSCommonHelper newsBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil].firstObject;

        [self addSubview:_customView];

        _customView.sn_insets(UIEdgeInsetsZero).sn_layout();

    }

    return self;

}

重点:

1、必须要用 loadNibNamed:方法加载一个_customView,然后作为子view添加到self上。这样该xib的子视图就都能初始化并显示。

2、必须要设置_customView的frame

参考帖子:https://blog.csdn.net/sinat_35927740/article/details/79940415

相关文章

  • iOS中xib加载xib问题

    由于业务中有重复的view所以我打算抽出来复用,为了简便我用了xib(B),然后直接在xib(A)中使用B。运行发...

  • 觅食邦 开发总结

    XIB 加载要点 通过xib加载view会调用- (void)awakeFromNib方法 xib加载view,点...

  • xib文件中加载另一个xib文件

    iOS Interface Builder:在.xib文件中加载另一个.xib文件 在开发中,经常会用到一个需要重...

  • 2018-03-20

    iOS Xib 加载View frame布局无效 - (instancetype)initWithFrame:(C...

  • Bug-遇见-iOS

    加载xib 崩溃 1.正确的加载xib的方式加载ViewController 加载UIView

  • contentInsetAdjustmentBehavior 导

    使用xib加载 自定义UIView才会出现问题 修复办法,将xib文件中 所有与safearea有关的layout...

  • iOS中xib与storyboard各种加载

    xib 加载自定义View xib 加载自定义控制器 storyboard 加载自定义控制器 xib 加载自定义cell

  • IOS中关于Xib的使用

    ios中关于Xib使用 xib和Storyboard的区别xib是轻量级,用来描述局部UI界面Storyboard...

  • xib文件使用

    xib用来描述一个View。一个xib文件可以描述多个View。 加载xib的加载方式一 方式二

  • 03-UI基础第3天

    一、xib文件 加载xib文件:xxx.xib --> 编译 --> xxx.nib 方式一: 方式二:

网友评论

    本文标题:iOS中xib加载xib问题

    本文链接:https://www.haomeiwen.com/subject/jsrdyqtx.html