zoukankan      html  css  js  c++  java
  • 使用xib封装一个自定义view的步骤

    使用xib封装一个自定义view的步骤

    1> 新建一个继承UIView的自定义view,假设类名叫做(MJAppView)

    2> 新建一个MJAppView.xib文件来描述MJAppView内部的结构

    3> 修改UIView的类型为MJAppView真是类型

    4> 将内部的子控件跟MJAppView进行属性连线

    5> MJAppView提供一个模型属性

    6> 重写模型属性的set方法,因为在set方法中可以拿到外界传递的模型数据

    7> 把模型数据拆开,分别设置数据到对应的子控件中

    8> 补充:提供一个创建MJAppView的类方法,将读取xib文件的代码屏蔽起来

    //

    //  MJAppView.h

    //  01-应用管理

    //

    //  Created by apple on 14-3-26.

    //  Copyright (c) 2014年 itcast. All rights reserved.

    //

    #import <UIKit/UIKit.h>

    @class MJApp;

    @interface MJAppView : UIView

    /**

     *  模型数据

     */

    @property (nonatomic, strong) MJApp *app;

    + (instancetype)appView;

    /**

     *  通过模型数据来创建一个view

     */

    + (instancetype)appViewWithApp:(MJApp *)app;

    @end

    //

    //  MJAppView.m

    //  01-应用管理

    //

    //  Created by apple on 14-3-26.

    //  Copyright (c) 2014年 itcast. All rights reserved.

    //

    #import "MJAppView.h"

    #import "MJApp.h"

    @interface MJAppView()

    @property (weak, nonatomic) IBOutlet UIImageView *iconView;

    @property (weak, nonatomic) IBOutlet UILabel *nameLabel;

    @end

    @implementation MJAppView

    //+ (instancetype)appView

    //{

    //    NSBundle *bundle = [NSBundle mainBundle];

    //    // 读取xib文件(会创建xib中的描述的所有对象,并且按顺序放到数组中返回)

    //    NSArray *objs = [bundle loadNibNamed:@"MJAppView" owner:nil options:nil];

    //    return [objs lastObject];

    //}

    //

    //+ (instancetype)appViewWithApp:(MJApp *)app

    //{

    //    MJAppView *appView = [self appView];

    //    appView.app = app;

    //    return appView;

    //}

    + (instancetype)appViewWithApp:(MJApp *)app

    {

        NSBundle *bundle = [NSBundle mainBundle];

        // 读取xib文件(会创建xib中的描述的所有对象,并且按顺序放到数组中返回)

        NSArray *objs = [bundle loadNibNamed:@"MJAppView" owner:nil options:nil];

        MJAppView *appView = [objs lastObject];

        appView.app = app;

        return appView;

    }

    + (instancetype)appView

    {

        return [self appViewWithApp:nil];

    }

    - (void)setApp:(MJApp *)app

    {

        _app = app;

        

        // 1.设置图标

        self.iconView.image = [UIImage imageNamed:app.icon];

        

        // 2.设置名称

        self.nameLabel.text = app.name;

    }

    @end

  • 相关阅读:
    Promise
    location(未完)
    Web Storage API : LocalStroage
    从vmware下载到Linux环境下jdk和maven的安装
    2015.8.1 bootstrap学习(个人每日学习的随笔,比较凌乱
    git报错 error: cannot stat ‘'web/js': Permission denied
    移动端的自适应
    Socket .net MVC 的配置 包括异常断开
    ExtJS ComboBox之 键入自动查询
    ExtJS ComboBox之 2级联动
  • 原文地址:https://www.cnblogs.com/supper-Ho/p/6208359.html
Copyright © 2011-2022 走看看