欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

UIKit框架(20)表格視圖UITableView-創(chuàng)新互聯(lián)

UITableView是UIKit中最常用的一種視圖,是UIScrollView的子類

高密ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

本篇文章介紹 UITableView的基本使用,包括:

    UITableView的數(shù)據(jù)源驅(qū)動

    各種數(shù)據(jù)源、代理方法

    單元格的重用機(jī)制

    數(shù)據(jù)的刷新

    ...

  • UITableView的樣式

創(chuàng)建時需要指定樣式:

- (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style
@property(nonatomic, readonly) UITableViewStyle style
typedef enum {
     UITableViewStylePlain,
     UITableViewStyleGrouped
} UITableViewStyle;

    UIKit框架(20)表格視圖UITableView

  • UITableView中的內(nèi)容

表格視圖中可以包含多個組

每個組中又可以包含多個單元格(cell)

每個組上面的header視圖

每個組下面的footer視圖

這些屬性的賦值:使用數(shù)據(jù)源和代理驅(qū)動

  • UITableView的數(shù)據(jù)源驅(qū)動

UITableView包含兩個代理:

@property(nonatomic, assign) id< UITableViewDelegate > delegate  //代理
@property(nonatomic, assign) id< UITableViewDataSource > dataSource //數(shù)據(jù)源

   數(shù)據(jù)源可以使用代理設(shè)計(jì)模式,其功能屬于代理的第三種應(yīng)用,為自身屬性賦值

重要的數(shù)據(jù)源方法:

   表格視圖中應(yīng)當(dāng)包含多少個組,默認(rèn)為1

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

   表格視圖中指定組中應(yīng)當(dāng)包含多少個cell,必須實(shí)現(xiàn)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

   表格視圖中指定組及行的cell視圖,必須實(shí)現(xiàn)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

   表格視圖中的cell視圖在將要顯示時自動調(diào)用,應(yīng)將數(shù)據(jù)綁定的代碼放在這里

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

    一般來說,這四個數(shù)據(jù)源方法,是必須要實(shí)現(xiàn)的(第一個不實(shí)現(xiàn)默認(rèn)為一個section)

如:

//當(dāng)前控制器遵循數(shù)據(jù)源、代理協(xié)議
@interface ViewController () <UITableViewDataSource, UITableViewDelegate>
//當(dāng)前控制器成為tableView的數(shù)據(jù)源和代理
self.tableView.dataSource = self;
self.tableView.delegate = self;
//四個數(shù)據(jù)源方法
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 3;//三個section
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return section+1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"111"];
    return cell;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.textLabel.text = [NSString stringWithFormate:@"Section:%ld Row:%ld", indexPath.section, indexPath.row];
}

  • UITableView的行高

兩種方式:

1)統(tǒng)一的高度通過UITableView對象的rowHeight屬性設(shè)定

@property(nonatomic) CGFloat rowHeight

2)也可以通過實(shí)現(xiàn)tableView的代理方法,返回每一行的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

  • UITableView的其他數(shù)據(jù)源、代理方法

行被點(diǎn)擊(選擇)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath

section的右側(cè)索引

- (NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView

section的header和footer

//header、footer上的文字
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
//header、footer為自定義的視圖
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
//header、footer的高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

編輯模式

//返回每個cell的編輯狀態(tài)的模式(刪除、插入)
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
//響應(yīng)點(diǎn)擊編輯按鈕時的動作
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath

    編輯模式有兩種方式進(jìn)入:

    1)滑動單元格,當(dāng)前單元格進(jìn)入編輯模式

    2)修改UITableView對象的editing屬性

@property(nonatomic, getter=isEditing) BOOL editing //編輯模式使能
- (void)setEditing:(BOOL)editing animated:(BOOL)animate

  • 單元格的重用機(jī)制

為了有效的利用內(nèi)存,UITableView使用了重用機(jī)制管理其內(nèi)部顯示的所有cell

   當(dāng)一個cell離開了屏幕范圍時,會將其從tableView內(nèi)部移除并放到一個緩存隊(duì)列中存儲

   當(dāng)一個cell將要顯示時,如果隊(duì)列中存在cell,則直接重用該cell,如果沒有則創(chuàng)建新的

這個隊(duì)列稱之為“重用隊(duì)列”,這種管理內(nèi)部視圖的方式稱之為“重用機(jī)制”

重用ID:

   一個tableView中可以存在多種不同樣式的cell,引入重用ID以區(qū)分不同的樣式

   即:從重用隊(duì)列取cell時,要按照指定的ID取出,創(chuàng)建cell時要設(shè)置其ID

從重用隊(duì)列取出cell的方法:(UITableView)

- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier

將上面返回cell的數(shù)據(jù)源方法修改為:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    static NSString *cellID = @"cell";
    UITableViewCell * cell = [tableView dequeueResuableCellWithIdentifier:cellID];
    if ( cell == nil ) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"111"];
    }
    return cell;
}

  • UITableView數(shù)據(jù)的重新加載

在實(shí)際開發(fā)中,觸發(fā)了某些事件(如網(wǎng)絡(luò)獲取到更多數(shù)據(jù)、用戶請求刷新等),要求UITableView刷新顯示所有數(shù)據(jù)

刷新的方法如下:

- (void)reloadData
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation
- (void)reloadSectionIndexTitles //重新加載右側(cè)的索引

    這些方法將重新調(diào)用全部或部分的數(shù)據(jù)源、代理方法,重新展示數(shù)據(jù)

重新加載數(shù)據(jù)的通常做法是:

    控制器實(shí)現(xiàn)UITableView的數(shù)據(jù)源和代理方法,并管理著需要顯示的數(shù)據(jù)模型(數(shù)組)

    當(dāng)需要刷新數(shù)據(jù)時,控制器修改數(shù)據(jù)模型(數(shù)組),然后調(diào)用UITableView的刷新方法

    即:修改模型 --> reloadData

  • UITableView的其他的屬性及方法

UITableView的背景視圖(通常設(shè)置一個UIImageView對象)

@property(nonatomic, readwrite, retain) UIView *backgroundView

滾動到指定的單元格

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

單元格之間的分割樣式及顏色

@property(nonatomic) UITableViewCellSeparatorStyle separatorStyle
@property(nonatomic, retain) UIColor *separatorColor

單元格與indexPath的互相獲取

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath 
- (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell

獲得當(dāng)前顯示的單元格

- (NSArray *)visibleCells //獲得所有可見的cell
- (NSArray *)indexPathsForVisibleRows //獲得所有可見cell的indexPath

選擇相關(guān)設(shè)置

@property(nonatomic) BOOL allowsSelection //cell選擇的使能
@property(nonatomic) BOOL allowsMultipleSelection //多選使能
- (NSIndexPath *)indexPathForSelectedRow //當(dāng)前被選擇的cell的indexPath
- (NSArray *)indexPathsForSelectedRows //多選時
- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animatedscrollPosition:(UITableViewScrollPosition)scrollPosition //選擇指定行
- (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated //反選

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章標(biāo)題:UIKit框架(20)表格視圖UITableView-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://aaarwkj.com/article4/dohsoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、響應(yīng)式網(wǎng)站微信公眾號、App設(shè)計(jì)、全網(wǎng)營銷推廣、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
欧美a级黄片免费在线观看| 国产高清av免费在线观看| 欧美精品日韩中文字幕在| 91久久高清国语自产拍| 亚洲一区有码在线观看| 青青草青娱乐免费在线视频| 日本人妻在线不卡视频| 国产精品免费观看在线国产| 中文字幕成人乱码亚洲| 久久伊人69日韩精品| 五月天久久开心激情网| 日本2区3区视频在线观看| 色爱区偷拍人妻中文字幕| 国产精品大白屁股视频| 香蕉视频欧美日韩国产| 清纯唯美校园春色亚洲激情| 青青草视频免费观看高清在线观看新| 丁香六月婷婷激情啪啪综合| 久久99国产精品成人免费| 18禁黄网站免费观看在线| 日本不卡一二三区在线观看| 97精品免费视频观看| 成人性生交大片免费看中文 | 国产亚洲综合另类色专区| 成人精品午夜福利视频| 秋霞日韩欧美一区二区三区| 亚洲激情午夜福利视频| 欧美日韩男女性生活视频| 亚洲精品一区二区毛豆| 自由成熟性生活免费视频| 一本色道久久88综合日韩| 日韩电影网国产精品| 日韩av在线黄色免费大全| 国产特级黄色片免费看| 亚洲欧美日韩国产亚洲欧美日韩国产| 成人免费毛片内射视频| 亚洲精品一区二区三区pp| 五月开心婷婷中文字幕| 亚洲综合偷拍日韩av| 亚洲欧美极品一区色婷婷| 精品亚洲第一区二区免费在线|