美文网首页iOS进阶指南iOSiOS Developer
[UI向]在xib中使用另一个xib进行开发

[UI向]在xib中使用另一个xib进行开发

作者: 码痞 | 来源:发表于2016-02-28 13:16 被阅读3692次

    文中类的命名没有严格按照驼峰法写,作者太饿了懒得改了……

    --------------正文分割线-----------------

    在使用xib进行界面搭建时,可能有一些xib文件是可以复用的,可能就需要在一个xib文件中使用另一个xib。

    如下图所示。

    在UIView中使用复用模块

    这个步骤相对于用代码加载xib文件而言相对复杂一点,接下来一步一步讲解

    1.创建两个xib

    首先创建一个ParentViewController,创建时勾选同时创建Xib文件

    再创建作为复用模块示例的ChildView类和对应的名为ChildView的xib文件

    创建xib

    如下图,对ChildView的xib界面进行设置,通过设置Size为Free可以自View中添加一个Label和一个Button,并设置View的背景色。

    设置ChildView.xib

    2.关联xib文件与ChildView类

    在ChildView.h中声明IBOutlet变量

    @property(nonatomic,weak) IBOutlet UIView* view;
    

    在ChildView.m中进行关联

    #import "ChildView.h"
    
    @implementation ChildView
    
    - (instancetype)initWithCoder:(NSCoder *)aDecoder{
        
        if (self = [super initWithCoder:aDecoder]) {
            
            [self creatView];
        }
        
        return self;
    }
    
    - (void)creatView{
        
        [[NSBundle mainBundle] loadNibNamed:@"ChildView" owner:self options:nil];
        [self addSubview:self.view];
        
        self.view.frame = self.bounds; //填一下自动布局的坑!最好要写这一句
    }
    

    在ChildView.xib中,

    • 1.点击左侧的File's Owner,设置他的类(此处为ChildView)
    • 2.拉线设置IBOutlet
    设置xib-1

    点击view 进行关联


    设置xib-2

    这样我们就关联好了ChildView类和对应的xib文件。

    3.在ParentView中添加控件

    向ParentViewController.xib中添加一个UIView控件,该UIView的class属性设置为ChildView.即可关联到我们刚才设置好的可复用视图,设置一下布局约束,大功告成。

    向ParentViewController中添加控件

    效果图

    效果图

    理一下思路,

    实际上我们做的是创建了一个ChildView,在ChildView里加载了xib,并将这个xib中View的尺寸等于了ChildView的尺寸。
    相当于将一个View贴在了ChildView上,这个View的子控件响应等都可以放在ChildView类里写。

    层次图

    欢迎评论区指正批评交流讨论!


    小提醒

    看到评论区的朋友们反馈发生错误,分析了一下可能是代码里的原因导致的,本文的方法到目前为止是没有问题的

    如果遇到Crush报错*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x60400000bf70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'

    看一下这里 http://blog.csdn.net/sunxiaoju/article/details/49936521

    确认一下是不是你在修改xib和.m文件关联的时候忘记把旧约束删干净了,
    如果还没有解决可以加我的QQ帮你看:125729996

    感谢每一个阅读和喜欢。

    相关文章

      网友评论

        本文标题:[UI向]在xib中使用另一个xib进行开发

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