zoukankan      html  css  js  c++  java
  • IOS中使用.xib文件封装一个自定义View

    1.新建一个继承UIView的自定义view,假设类名叫做 MyAppVew

    #import <UIKit/UIKit.h>
    @class MyApp;
    
    @interface MyAppView : UIView
    
    @property(strong,nonatomic) MyApp*app;
    
    +(instancetype)appView;
    @end

    MyAppView.h

    #import "MyAppView.h"
    #import "MyApp.h"
    
    
    @interface MyAppView ()
    
    @property (weak, nonatomic) IBOutlet UIImageView *iconView;
    @property (weak,nonatomic) IBOutlet UILabel *nameLable;
    
    @end
    
    @implementation MyAppView
    
    
    
    
    -(void)setApp:(MyApp *) app
    {
        _app=app;
        self.iconView.image=[UIImage imageNamed:app.icon];
        self.nameLable.text=app.name;
        //NSLog(@"%@", app.icon);
    }
    
    +(instancetype) appView{
        
        NSBundle *bundle=[NSBundle mainBundle];
        NSArray *objs=[bundle loadNibNamed:@"AppInfoView" owner:nil options:nil];
        return [objs lastObject];
    
    }
    
    +(instancetype) appViewWithApp:(MyApp *)app{
        MyAppView *appView=[self appView];
        appView.app=app;
        return appView;
    }
    
    
    @end

    2.新建一个MyAppVIew.xib文件来描述MyAppView内部结构

    3.修改UIView的类型为MyAppView类型

    4.将内部的子控件跟MyAppView进行属性连线

    5.MyAppView提供一个模型属性

    @interface MyAppView ()

     

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

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

     

     

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

     

    -(void)setApp:(MyApp *) app
    {
        _app=app;
        self.iconView.image=[UIImage imageNamed:app.icon];
        self.nameLable.text=app.name;
        //NSLog(@"%@", app.icon);
    }

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

     

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

     

    +(instancetype) appView{
        
        NSBundle *bundle=[NSBundle mainBundle];
        NSArray *objs=[bundle loadNibNamed:@"AppInfoView" owner:nil options:nil];
        return [objs lastObject];
    
    }
    
    +(instancetype) appViewWithApp:(MyApp *)app{
        MyAppView *appView=[self appView];
        appView.app=app;
        return appView;
    }

    通过封装数据,对mvc有了初步认识。

  • 相关阅读:
    Ocelot + IdentityServer4 坑自己
    撸一个简易商城
    visual studio2013负载测试简单问题记录
    Jquery简单动画的实现记录
    Jquery的一些简单使用记录
    图片变灰css3
    Jquery的一些取值
    ASP.NET WebApi 简单记录
    iframe的一些简单记录
    Jquery Select 下拉框处理
  • 原文地址:https://www.cnblogs.com/fxiaoquan/p/4440003.html
Copyright © 2011-2022 走看看