1. 程式人生 > >自定義UIView(xib)方式--新增到其他ViewController上

自定義UIView(xib)方式--新增到其他ViewController上

  使用XIB自定義UIView:

 01:新建一個UIView繼承自UIView。

02:新建一個xib檔案,檔案必須和上一步的自定義的UIView的名字一樣。

03:在xib上新增各類控制元件。

       重點:如何在其他ViewController中使用自定義的View

        04:nib載入這個View

NSArray *nib = [[NSBundlemainBundle]loadNibNamed:@"AZDetailView"owner:selfoptions:nil];

   AZDetailView *deataiView=[nib objectAtIndex:0];

          得到這個自定義的View

 推薦將其寫在自定義View的對外介面中,使用類方法建立

+(LKTextView *)instanceTextView
{
    NSArray* nibView =  [[NSBundle mainBundle] loadNibNamed:@"LKTextView" owner:nil options:nil];
    return [nibView objectAtIndex:0];
}

  這樣在其他頁面建立時,也可以像普通控制元件一樣建立。

接下來是填充這個檢視。有兩種方式。

第一種使用單例,在awakeFromNib中做資料填充,這樣做有一個優點:在檢視建立完後,資料就會被填充。缺點就是:使用了單例模型,增加了記憶體開銷。

第二種

利用setter方法。在自定義的檢視中,定義一個屬性.(通常為模型),然後在.m檔案中利用setter方法,完成對檢視的填充。優點:不使用單例,節省記憶體開銷。缺點:檢視建立完後,直到呼叫setter方法,資料才會被填充到檢視上。但是,我們可以在下載資料完後,在建立檢視,然後呼叫setter方法。這樣看起來還是相當快速的填充了資料

05:

第一種,填充資料

在  -(void)awakeFromNib 方法中寫上載入nib時,做的一些資料填充。(使用單例,獲取單例模型,然後填充資料)。

-(void)awakeFromNib
{
    AZDetailMediaModel *detailMedia=[AZDetailMediaModel shareDetailMedia];
    self.nameLabel.text=detailMedia.name;
    [self.pic setImageWithURL:[NSURL URLWithString:detailMedia.picUrl]];
    self.start.text=detailMedia.start;
    self.dictro.text=detailMedia.dicetor;
    self.actor.text=detailMedia.actor;
    self.type.text=detailMedia.type;
    self.time.text=detailMedia.time;
    self.introLabel.text=detailMedia.intro;
}


第二種,填充資料

利用Setter方式。設定模型屬性,在.m檔案中的set方法裡,對資料進行填充。

使用注意:建立檢視完成後,必須呼叫setter方式才能填充資料

.h檔案

#import <UIKit/UIKit.h>
#import "AZDateRecommendModel.h"

@interface AZDateRecommendView : UIView
@property (weak, nonatomic) IBOutlet UILabel *day;
@property (weak, nonatomic) IBOutlet UILabel *chinaDate;
@property (weak, nonatomic) IBOutlet UILabel *date;
@property (weak, nonatomic) IBOutlet UIImageView *luckImageView;


@property (nonatomic,strong)AZDateRecommendModel *model;

@end
.m檔案
#import "AZDateRecommendView.h"

@implementation AZDateRecommendView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void)setModel:(AZDateRecommendModel *)model
{
    self.day.text = [model.GregorianCalendar componentsSeparatedByString:@"-"].lastObject;
    self.date.text = model.GregorianCalendar;
    self.chinaDate.text = [NSString stringWithFormat:@"農曆%@", model.LunarCalendar];
    
}
@end


使用方法
 _dateRecommendView = [[NSBundle mainBundle] loadNibNamed:@"AZDateRecommendView" owner:self options:nil].lastObject;
    _dateRecommendView.frame = CGRectMake(40, 74, 250, 100);
    _dateRecommendView.backgroundColor = [UIColor redColor];
    
//省略下載資料,填充模型

//設定模型,呼叫setter方法

_dateRecommendView.model=model;

    [self.view addSubview:_dateRecommendView];


相關推薦

定義UIViewxib方式--新增其他ViewController

  使用XIB自定義UIView:  01:新建一個UIView繼承自UIView。 02:新建一個xib檔案,檔案必須和上一步的自定義的UIView的名字一樣。 03:在xib上新增各類控制元件。        重點:如何在其他ViewController中使用自定義的

呼叫Action中的定義方法4種方式

Action中的execute()方法是預設方法,在執行時被自動呼叫。但也允許在Action中自定義方法。可以在Action中自定義多個方法,分別處理不同的邏輯。當Action 中使用了自定義方法,該Action 就需要特定的配置,一般有四種呼叫方式: (1)使

Excel資料匯入到SharePoint定義列表資料檢視方式

本篇講解一個有些新穎的SharePoint例項應用,給甲方做過專案的都有過體會,資料太多了,客戶有Excel,要求實現批量匯入。效果圖大致如下所示此例項是借用列表的資料檢視實現匯入,資料檢視類似Excel,所以可以直接在上面編輯,甚至從Excel中直接貼上進去,然後點選儲存將

定義屬性2

aps 按鈕 charset script 定義 type i++ element color 定義三個按鈕 點擊按鈕,出現A、B、C、D字母,點擊一下,出現一個 當按鈕字母為 D 的時候,繼續點擊又會重新回到 A 1 <!DOCTYPE HTML>

定義廣播BroadcastReceiver事件 --Android開發

ppc andro xtend 類型 class get receive cli time 本例演示自定義廣播事件。我們需要做的是,在主活動中寫發送廣播的代碼,然後在接收廣播的類中寫接收廣播的代碼。 1、主活動中點擊按鈕後發送廣播 MainActivity.java

Django定義urlpath轉換器

需求1: 實現一個獲取電影列表的demo,使用者可以根據/movie/電影分類/的方式來獲取電影。其中電影分類採用的是分類1+分類2+分類3...的方式拼接的,並且如果只有一個分類,那就不需要加號。示例如下: # 1. 第一種:獲取action分類下的電影 /movie/action

定義 Laravel monolog日誌位置,並增加請求ID

修改 bootstrap/app.php 檔案 $app->configureMonologUsing(function($monolog) use ($app) { $monolog->pushHandler( (new Monolog\Hand

Spring定義Listener監聽器的使用

文章轉自:https://blog.csdn.net/L253272670/article/details/77715899          在java web專案中我們通常會有這樣的需求:當專案啟動時執行一些初始化操作,例如從資料庫載入全域性

左滑刪除 --- 定義元件優化

想來想去  還是先引入元件吧 http://bmob-cdn-20610.b0.upaiyun.com/2018/11/20/736355a740c835f9806ee0d021ff6696.rar 複製以上鍊接   直接下載  之後壓縮  放進你的專案

解析網頁定義字型

解析網頁自定義字型(二) 介紹 背景知識 TrueType字型 fontTools 字型檔案解析庫 xml.dom.minidom xml程式碼解析庫 matplotlib 繪圖工具包 pytesseract oc

定義View1

點操作:moveTo和lineTo和rLinneTo的理解 1、lineTo 用於進行直線繪製。起點預設為座標原點(左上),如果有path的存在,則是繪製的最後點為基準,座標點對應的(0,0)到lineTo(x,y)的偏移量 比如 /** * 線操作 * lineTo的偏移量相對於原

微信開發學習總結——定義選單5——個性化選單介面

一、個性化選單介面說明 為了幫助公眾號實現靈活的業務運營,微信公眾平臺新增了個性化選單介面,開發者可以通過該介面,讓公眾號的不同使用者群體看到不一樣的自定義選單。該介面開放給已認證訂閱號和已認證服務號。 開發者可以通過以下條件來設定使用者看到的選單: 1、使用者標籤(開發者的

微信開發學習總結——定義選單4——定義選單事件推送

一、自定義選單事件推送介面說明 使用者點選自定義選單後,微信會把點選事件推送給開發者,請注意,點選選單彈出子選單,不會產生上報。請注意,第3個到第8個的所有事件,僅支援微信iPhone5.4.1以上版本,和Android5.4以上版本的微信使用者,舊版本微信使用者點選後將沒有迴應,開

微信開發學習總結——定義選單3——定義選單刪除介面

自定義選單刪除介面 使用介面建立自定義選單後,開發者還可使用介面刪除當前使用的自定義選單。另請注意,在個性化選單時,呼叫此介面會刪除預設選單及全部個性化選單。 請求說明 http請求方式:GET https://api.weixin.qq.com/cgi-bin/menu/d

微信開發學習總結——定義選單2——定義選單查詢介面

自定義選單查詢介面 使用介面建立自定義選單後,開發者還可使用介面查詢自定義選單的結構。另外請注意,在設定了個性化選單後,使用本自定義選單查詢介面可以獲取預設選單和全部個性化選單資訊。 請求說明 http請求方式:GET https://api.weixin.qq.com/cg

微信開發學習總結——定義選單1——定義選單建立介面

一、自定義選單建立介面說明 自定義選單能夠幫助公眾號豐富介面,讓使用者更好更快地理解公眾號的功能。開啟自定義選單後,公眾號介面如圖所示: 請注意: ①自定義選單最多包括3個一級選單,每個一級選單最多包含5個二級選單。 ②一級選單最多4個漢字,二級選單最多7個漢字,多出來的部分將

Android定義View-Draw原理篇

Android自定義View通常需要經過measure、layout和draw過程。 如果你沒有了解過measure過程,可以先看看這篇文章。 如果你沒有了解過layout過程,可以先看看這篇文章。 一、draw的作用:繪製View檢視 二、draw過程:類似meas

MySql建立定義函式Function

1.建立自定義函式 DELIMITER $$ DROP FUNCTION IF EXISTS genPerson$$ CREATE FUNCTION genPerson(name varchar(20)) RETURNS varchar(50) BEGIN DECLAR

Android 定義View

前言:可是有時候我們總感覺官方定義的一些基本元件不夠用,自定義元件就不可避免了。那麼如何才能做到像官方提供的那些元件一樣用xml來定義他的屬性呢? 先總結下自定義View的步驟: 1、自定義View的屬性; 2、在View的構造方法中獲得自定義的屬性。 一、在re

定義View Matrix的原理解析

Matrix的英文是矩陣的意思,在Android中它起著座標對映、變換的功能。意思就是說我們在自定義view的時候,有時需要對圖表進行縮放、旋轉、轉移、錯切等操作,就需要對圖表的座標進行一定的轉換,此時就是Matrix在後臺起著轉換的作用。Matrix是一個三行三列的矩陣,大概長成下面那樣子,如