亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

11-UITableView

2019-11-14 19:28:04
字體:
來源:轉載
供稿:網友

UITableView

掌握

  • 設置UITableView的dataSource、delegate
  • UITableView多組數據和單組數據的展示
  • UITableViewCell的常見屬性
  • UITableView的性能優化(cell的循環利用)
  • 自定義Cell

作業

  • 使用素材car_simple.plist來展示汽車品牌數據

什么是UITableView

  • 在眾多移動應用中,能看到各式各樣的表格數據
  • 在iOS中,要實現表格數據展示,最常用的做法就是使用UITableView

  • UITableView繼承自UIScrollView,因此支持垂直滾動,而且性能極佳

UITableView的兩種樣式

如何展示數據

  • UITableView需要一個數據源(dataSource)來顯示數據
  • UITableView會向數據源查詢一共有多少行數據以及每一行顯示什么數據等
  • 沒有設置數據源的UITableView只是個空殼
  • 凡是遵守UITableViewDataSource協議的OC對象,都可以是UITableView的數據源

tableView和數據源

tableView展示數據的過程

  1. 調用數據源的下面方法得知一共有多少組數據

  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

  1. 調用數據源的下面方法得知每一組有多少行數據

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

  1. 調用數據源的下面方法得知每一行顯示什么內容

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

字典轉模型

初始MVC

  • MVC是一種設計思想,貫穿于整個iOS開發中,需要積累一定的項目經驗,才能深刻體會其中的含義和好處
  • MVC中的三個角色
  1. M:Model,模型數據
  2. V:View,視圖(界面)
  3. C:Control,控制中心
  • MVC的幾個明顯的特征和體現:
  1. View上面顯示什么東西,取決于Model
  2. 只要Model數據改了,View的顯示狀態會跟著更改
  3. Control負責初始化Model,并將Model傳遞給View去解析展示

Cell簡介

  • UITableView的每一行都是一個UITableViewCell,通過dataSource的tableView:cellForRowAtIndexPath:方法來初始化每一行
  • UITableViewCell內部有個默認的子視圖:contentView,contentView是UITableViewCell所顯示內容的父視圖,可顯示一些輔助指示視圖
  • 輔助指示視圖的作用是顯示一個表示動作的圖標,可以通過設置UITableViewCell的accessoryType來顯示,默認是UITableViewCellAccessoryNone(不顯示輔助指示視圖),其他值如下:
  1. UITableViewCellAccessoryDisclosureIndicator

  2. UITableViewCellAccessoryDetailDisclosureButton

  3. UITableViewCellAccessoryCheckmark

  • 還可以通過cell的accessoryView屬性來自定義輔助指示視圖(比如往右邊放一個開關)

UITableViewCell的contentView

  • contentView下默認有3個子視圖
  1. 其中2個是UILabel(通過UITableViewCell的textLabel和detailTextLabel屬性訪問)
  2. 第3個是UIImageView(通過UITableViewCell的imageView屬性訪問)
  • UITableViewCell還有一個UITableViewCellStyle屬性,用于決定使用contentView的哪些子視圖,以及這些子視圖在contentView中的位置
  1. UITableViewCellStyleDefault

  2. UITableViewCellStyleSubtitle
  3. UITableViewCellStyleValue1
  4. UITableViewCellStyleValue2

UITableViewCell結構

Cell的重用原理

  • iOS設備的內存有限,如果用UITableView顯示成千上萬條數據,就需要成千上萬個

  UITableViewCell對象的話,那將會耗盡iOS設備的內存。要解決該問題,需要重用

  UITableViewCell對象

  • 重用原理:當滾動列表時,部分UITableViewCell會移出窗口,UITableView會將窗口

  外的UITableViewCell放入一個對象池中,等待重用。當UITableView要求dataSource

  返回UITableViewCell時,dataSource會先查看這個對象池,如果池中有未使用的

  UITableViewCell,dataSource會用新的數據配置這個UITableViewCell,然后返回

  給UITableView,重新顯示到窗口中,從而避免創建新對象

  • 還有一個非常重要的問題:有時候需要自定義UITableViewCell(用一個子類繼承UITableViewCell),

  而且每一行用的不一定是同一種UITableViewCell,所以一個UITableView可能擁有不同類型的UITableViewCell,

  對象池中也會有很多不同類型的UITableViewCell,那么UITableView在重用UITableViewCell時可能會得到錯誤類型的UITableViewCell

  • 解決方案:UITableViewCell有個NSString *reuseIdentifier屬性,可以在初始化UITableViewCell的時候傳入

   一個特定的字符串標識來設置reuseIdentifier(一般用UITableViewCell的類名)。當UITableView要求dataSource

  返回UITableViewCell時,先通過一個字符串標識到對象池中查找對應類型的UITableViewCell對象,如果有,就重用,

  如果沒有,就傳入這個字符串標識來初始化一個UITableViewCell對象

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

   {

    // 1.定義一個cell的標識

    static NSString *ID = @"mjcell";

     // 2.從緩存池中取出cell

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

    // 3.如果緩存池中沒有cell

    if (cell == nil)

    {

      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];

     }

    // 4.設置cell的屬性...

    return cell;

  }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕欧美精品日韩中文字幕| 欧美极品少妇xxxxx| 亚洲精品久久久久久久久久久久久| 日韩av手机在线| 麻豆一区二区在线观看| 日韩精品免费在线观看| 午夜精品久久久久久久白皮肤| 国产成人福利夜色影视| 午夜欧美不卡精品aaaaa| 久热在线中文字幕色999舞| 日韩av手机在线| 欧美日韩国产色| 欧美日韩免费看| 色综合视频网站| 深夜福利91大全| 精品中文字幕视频| 欧美一级黑人aaaaaaa做受| 亚洲欧美一区二区三区在线| 国产精品第一第二| 亚洲电影免费在线观看| 欧美在线一级va免费观看| 人人爽久久涩噜噜噜网站| 91久久久在线| 国产亚洲精品美女久久久| 精品久久久香蕉免费精品视频| 久久天天躁夜夜躁狠狠躁2022| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲国产精品视频在线观看| 国产一区二区日韩| 亚洲大胆人体在线| 久久久精品亚洲| 欧美日韩精品中文字幕| 久久久久中文字幕| 色综合视频网站| 亚洲精品一区av在线播放| 国产精品永久免费在线| 成人在线免费观看视视频| 亚洲精品永久免费| 国产一区二区色| 日本免费一区二区三区视频观看| 中文字幕成人精品久久不卡| 亚洲第一区中文99精品| 成人免费淫片aa视频免费| 日韩大陆欧美高清视频区| 久久久久久尹人网香蕉| 日韩精品一区二区视频| 久久久国产一区二区三区| 国产精品视频中文字幕91| 久久99久国产精品黄毛片入口| 成人信息集中地欧美| 中文字幕亚洲一区在线观看| 久久精品青青大伊人av| 97久久伊人激情网| 在线性视频日韩欧美| 国产精品一区二区三区久久| 日韩av在线导航| 97福利一区二区| 亚洲欧美中文字幕在线一区| 亚洲色图狂野欧美| 欧美在线亚洲在线| 中文字幕日韩在线观看| 日韩高清av一区二区三区| 亚洲最大的av网站| 亚洲欧美三级伦理| 最近2019中文字幕第三页视频| 成人精品视频99在线观看免费| 久久精品国产精品亚洲| 中文字幕亚洲激情| 久久精品色欧美aⅴ一区二区| 欧美另类极品videosbestfree| 91chinesevideo永久地址| 欧美视频在线观看 亚洲欧| 亚洲精美色品网站| 欧美福利视频网站| 久久精品91久久香蕉加勒比| 亚洲人成网站999久久久综合| 高清欧美性猛交xxxx黑人猛交| 中文国产成人精品久久一| 欧美超级乱淫片喷水| 亚洲男女自偷自拍图片另类| 国产精品一区二区电影| 欧美日韩美女在线| 97在线观看免费| 亚洲国产小视频| 国产精品一区二区久久精品| 亚洲免费一级电影| 亚洲自拍av在线| 亚洲国产欧美一区| 欧美精品在线极品| 自拍亚洲一区欧美另类| 国产精品久久精品| 国产精品一区二区三区久久| 亚洲天堂av在线免费观看| 精品久久中文字幕久久av| 亚洲精品午夜精品| 欧美精品aaa| 亚洲精品国产精品久久清纯直播| 日韩中文字幕免费视频| 亚洲自拍高清视频网站| 日韩在线播放av| 97久久精品国产| 久久99精品国产99久久6尤物| 色久欧美在线视频观看| 欧美裸体xxxx极品少妇| 国产精品视频网| 久久综合伊人77777蜜臀| 亚洲免费视频一区二区| 日本a级片电影一区二区| 亚洲护士老师的毛茸茸最新章节| 国产精品一区二区女厕厕| 国产女同一区二区| 美女少妇精品视频| 欧美日韩午夜激情| 在线观看精品自拍私拍| 国产精品网址在线| 91久久精品久久国产性色也91| 国模gogo一区二区大胆私拍| 国产日韩换脸av一区在线观看| 亚洲石原莉奈一区二区在线观看| 一本一道久久a久久精品逆3p| 97国产成人精品视频| 日韩中文字幕在线观看| 亚洲高清免费观看高清完整版| 日韩精品小视频| 亚洲女人被黑人巨大进入al| xx视频.9999.com| 久久频这里精品99香蕉| 一本色道久久88综合日韩精品| 亚洲日韩第一页| 亚洲高清在线观看| 亚洲自拍偷拍色片视频| 亚洲国产精品99| 国内成人精品视频| 欧美自拍大量在线观看| 国产日韩在线观看av| 色综合天天狠天天透天天伊人| 精品视频中文字幕| 亚洲女人天堂成人av在线| 成人免费视频在线观看超级碰| 国产美女被下药99| 91亚洲精品一区二区| 国产精品影院在线观看| 欧美最顶级丰满的aⅴ艳星| 欧美性高潮在线| 狠狠久久亚洲欧美专区| 久久手机精品视频| 97在线观看免费高清| 国产亚洲欧美一区| 日韩视频―中文字幕| 日韩h在线观看| 欧美日韩在线观看视频| 国外成人在线直播| 日韩成人网免费视频| 国产日韩换脸av一区在线观看| 日韩av在线免费| 26uuu久久噜噜噜噜| 亚洲伊人久久大香线蕉av| 国产美女精品免费电影| 日韩美女在线看| 亚洲第一区第二区| 欧美精品在线免费观看| 高跟丝袜一区二区三区| 亚洲欧美日韩图片| 精品国产一区二区三区四区在线观看|