自定義AlretView,


自定義一個AlretVIew,通過xib和view關聯,可自由定製,可複用。

  

        通過代碼創建一個UIView子類,在這個子類內部對view進行一定的設定,通過傳入的數據模型動態改變view的顯示,這樣定義的子類一般複用性強, 但是創建UIView類的時候不能同時創建xib文件。


       有沒有方法可以像自定義UITableViewCell一樣,創建一個自定義的UIView類關聯到一個Xib文件,這樣可以減少很多佈局代碼。方法是先創建UIView的子類,這裏是JZDialogView,然後再創建一個JZDialogView.xib文件

            

  然後將View的Custom Class 項中的 Class 設置成JZDialogView,File's Owner 的CustomClass 可以不用管,

    但是  View 的一定要設置,設置完應該是這樣的 



 View的名字自動變成了 Dialog View

 

      現在可以自由定製xib文件,隨意添加組件,將需要隨數據改動的組件關聯到JZDialogView.h,像這樣

    


在JZDialogView.m中 重寫awakeFromNib方法 

- (void)awakeFromNib {
    
    [self initframe];

}




- (void)initframe
{
    [self setFrame:CGRectMake(0, 0, fDeviceWidth, fDeviceHeight)];
    self.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.4];
    self.dialogView.layer.cornerRadius=10;
    self.dialogView.layer.masksToBounds = YES;
              
}
              

-(void) setModel:(repayDetailModel *)model
{
    _model = model;
    
    _capitalLabel.text = _model.capital;
    _commissionLabel.text = _model.commission;
    _refundMLabel.text = _model.refundM;
    _fineForLatePaymentLabel.text = _model.fineForLatePayment;
    _countLabel.text =_model.count;
    
/**
 
  這裏可以根據model的內容計算,決定view該怎麼顯示,是否需要隱藏或者顯示一些組件等等,各個組件的大小位置也可以變化
     然後再  modifyLayout修改更新
 
 */
    
    [self  modifyLayout];
}

-(void) modifyLayout{






}




+(id) loadDialogView
{
    return  [[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil][0];
}







-(IBAction)dismiss
{
    [self removeFromSuperview];
}

在需要使用的的地方

JZDialogView *dia = [JZDialogView loadDialogView ];
    
    [dia setModel:[_data objectAtIndex:0]];
    
    [self.view addSubview:dia];


源碼下載地址:http://download.csdn.net/detail/jasonjz/9303115



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章