美文网首页iOS学习笔记
xib(自定义控件)

xib(自定义控件)

作者: 修行小怪兽 | 来源:发表于2016-04-26 17:24 被阅读136次

    1.创建xib文件,--(与你实例化那个控件的名字相一致)

    • 加载xib文件的实质是创建控件,包括父控件与子控件。
      假如xib里面有一个shopView ,子控件是UIImage与UILable控件。
      xib实现相当于代码(根据拖进去控件类型选择类方法)
    if(self=[super init])(代码创建)
    UIImageView *iconView= [[UIImageView alloc]init];
    UILabel *laberView = [[UILabel alloc]init];
    还有frame略去
    

    2.父控件是与名字一样的那个类,加载的时候创建的是这个类型。这个类型里有模型数据属性。

    • 2.1 拿到模型数据,可以用tag拿到子控件,对子控件进行给数据。
    UIImageView  *iconView = [(UIImageView  *)[self viewWithTag:5];
    
    • 2.2.采取IBOutlet拿到子控件 (只能连接到父控件)
    @property(nonatomic,strong)IBOutlet UIImageView  * iconView;
    /** 名字控件 */
    @property(nonatomic,strong)IBOutlet UILabel * lableView;
    

    3.加载xib文件

    
        shopView *yhshopview = [[[NSBundle mainBundle] loadNibNamed:@"shopView" owner:nil options:nil] lastObject];
    
    • 3.1最好屏蔽到输入的文件名字,防止出现错误,同事之间减少沟通成本。
    • 方法一写一个类方法
    +(NSString *) xibName
        {
     return NSStringFromClass(self);
    
       } 
    
    • 方法二直接将加载写到类方法中。
    +(instancetype)shopView{
    return [[[NSBundle mainBundle] loadNibNamed:  NSStringFromClass(self);
     owner:nil options:nil] lastObject];
    }
    

    4.为通过xib文件创建的控件初始化

     - 4.1 通过可视化在右边的边框里设置,缺点设置有限。
     - 4.2 一般想到用init方法例如:
    
    -(instantype)initWithFrame:(CGRect)frame{
      if(self =[super initWithFrame:frame])
     {
        self.backgroundColor = [UIColor  redColor];
      }
       return self;
    }
    

    首先通过xib创建的控件是不会调用上面这个方法。
    - 4.3 调用的是

      -(id)initWithCode:(NSCoder*) aDecoder{//这个是创建时,会调用。有些时候有些属性还不存在,所以不靠谱。
           if(self = [super initWithColor:aDecoder]){
              self.scrollView.backgroudColor = [UIColor redColor];
             
            }
           return self;
     }
    

    最好调用awakeFromNib
    ```
    - (void)awakeFromNib{
    self.srollView.backgroundColor =[UIColor redColor];
    }

        ```
    

    5.自定义控件的时候 ——不管是通过xib/story和代码创建控件最好在awakeFromNib和initWithFrame:(CGRect)frame里都将初始化的代码加上去。这样可以不管是通过什么方式创建的代码都会被初始化。

    相关文章

      网友评论

        本文标题:xib(自定义控件)

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