你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開辟之UITableView詳解

iOS開辟之UITableView詳解

編輯:IOS開發綜合

1、UITableView根本引見

默許的UITableView有2種作風:

  1. UITableViewStylePlain(不分組)
  2. UITableViewStyleGrouped(分組)
  3. UITableView中的數據只要行的概念,沒有列的概念,UITableView的每行數據就是一個UITableViewCell。
    自帶的UITableViewCell的類型選擇有:


    typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
        UITableViewCellStyleDefault,    // 左邊顯示textLabel(不顯示detailTextLabel),imageView可選(顯示在最右邊)
        UITableViewCellStyleValue1,     // 左邊顯示textLabel、右邊顯示detailTextLabel(默許藍色),imageView可選(顯示在最右邊)
        UITableViewCellStyleValue2,     // 左邊順次顯示textLabel(默許藍色)和detailTextLabel,imageView可選(顯示在最右邊)
        UITableViewCellStyleSubtitle    // 左上方顯示textLabel,左下方顯示detailTextLabel(默許灰色),imageView可選(顯示在最右邊)
    };

    2、UITableViewDataSource數據源

    數據源的感化就是告知UITableView,我該顯示甚麼數據


    #pragma mark 經常使用數據源辦法
    #pragma mark 前往分組數
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    #pragma mark 前往每組行數
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    #pragma mark 前往每行的單位格
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    #pragma mark 前往每組頭題目稱號
    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
    #pragma mark 前往每組尾部解釋
    - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section

    盤算分組數 -> 盤算每組行數 -> 生成份組索引 -> 生成單位格
    留意:cellForRowAtIndexPath只臨盆以後顯示在界面上的單位格

    3、UITableViewDelegate署理

    署理的感化是告知UITableView,我該怎樣顯示和呼應


    #pragma mark - 經常使用署理辦法
    #pragma mark 設置分組頭部的內容高度
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    #pragma mark 設置每行高度(每行高度可以紛歧樣)
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    #pragma mark 設置分組尾部的內容高度
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
    #pragma mark 點擊了某一行
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    #pragma mark 設置分組的頭部視圖
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
    #pragma mark 設置分組的尾部視圖
    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;

    4、UITableView刷新列表辦法


    #pragma mark 刷新全部表格
    - (void)reloadData;
    #pragma mark 刷新指定的行
    - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
    #pragma mark 刷新指定的分組
    - (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
    #pragma mark 刪除時刷新指定的行數據
    - (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
    #pragma mark 添加時刷新指定的行數據
    - (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;

    5、UITableViewCell的重用機制

    在UITableView外部有一個緩存池,專門用來緩存UITableViewCell,由於UITableView不是一會兒顯示全體Cell,而是以 所見即所得 的方法,手機上看的見的Cell,才有存在的對象UITableViewCell實例。詳細表示以下:

    每次顯示新的Cell的時刻,都是先從緩存池中掏出對應的UITableViewCell對象,停止 從新初始化 顯示。假如緩存池中沒有,才創立新的UITableViewCell對象
    每當某個Cell被移出 可見區域 外後,就會被 收受接管 到緩存池中
    所以雖然要展現的數據偉大,但內存中存在的UITableViewCell也是無限的,極年夜的下降了對內存的需求。


    # pragma mark 在tableView:cellForRowAtIndexPath:辦法中應用UITableView的重用機制
    // 因為此辦法挪用非常頻仍,cell的標示聲明成靜態變量有益於機能優化
    static NSString *cellIdentifier = @"UITableViewCellIdentifierKey1";
    // 起首依據標識去緩存池取
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    // 假如緩存池沒有找到,則從新創立並放到緩存池中
    if(!cell){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIdentifier];
    }

    6、體系自帶的UITableViewCell

    我們根本上很少應用體系自帶的UITableViewCell,款式太甚於逝世板了。

    7、自界說Cell

    根本步調:
    自界說類XXXTableViewCell,繼續UITableViewCell
    重寫-(id)initWithStyle:reuseIdentifier:辦法,添加子控件
    最好重寫layoutSubView辦法,設置子控件frame
    然後在UITableView的署理辦法tableView:cellForRowAtIndexPath:中應用重用機制創立該類XXXTableViewCell,再對cell停止初始化

    8、MVC形式

     

    【iOS開辟之UITableView詳解】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved