UITableView 和 UITableViewCell 的基本配置和經常使用屬性

一:UITableView的幾個重要屬性app

  1,style樣式, 在初始化時設置ui

    - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style;atom

    其中UITableViewStyle枚舉類型爲:spa

     typedef NS_ENUM(NSInteger, UITableViewStyle) {代理

        UITableViewStylePlain,                  // regular table view索引

        UITableViewStyleGrouped                 // preferences style table view事件

      };圖片

   2,separatorStyle 分割線樣式內存

      @property (nonatomic) UITableViewCellSeparatorStyle separatorStyle;it

      其中UITableViewCellSeparatorStyle枚舉類型

       typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) {

          UITableViewCellSeparatorStyleNone,

          UITableViewCellSeparatorStyleSingleLine,

          UITableViewCellSeparatorStyleSingleLineEtched   // This separator style is only supported for grouped style table views currently

      };

    3,separatorColor 分割線顏色

      @property (nonatomic, retain) UIColor   *separatorColor

      UI_APPEARANCE_SELECTOR; // default is the standard separator gray

    4,rowHeight 行高

      @property (nonatomicCGFloat  rowHeight;             // will return the default value if unset

    5,delegate控制代理 

    @property (nonatomic, assign)   id <UITableViewDataSource> dataSource;

    6,dataSource數據代理

    @property (nonatomic, assign)   id <UITableViewDelegate>   delegate;

二,UITableView基本配置

   1,UITableViewDataSource協議

        @required

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; //沒個分區的行數

     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;//配置cell

   @optional

     - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;              // Default is 1 if not implemented

      - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;    //section索引的title集合

     - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;     //設置頭部標題

     - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;   //設置尾部標題

 

    2,UITableViewDelegate協議

      1>-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath   //設置cell行高

      2>-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath //設置cell的縮進級別

      3>-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)sectionn  //設置頭部

      4>-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section //設置尾部

三,UITableViewCell

   1,cell的基本組成; 編輯,內容,輔助

    1>編輯 editView,tableView被編輯時顯示

    2>內容 包括imageView,textLabel,detailTextLabel

    3>輔助 accessoryView   顯示cell的輔助信息

   2,cell定製

    1>imageView   //圖片

    2>textLabel  //文本

    3>detailTextLabel  //詳情

    4>selectStyle   //選中效果

      有以下四種選中效果

typedef NS_ENUM(NSInteger, UITableViewCellSelectionStyle) {

    UITableViewCellSelectionStyleNone,

    UITableViewCellSelectionStyleBlue,

    UITableViewCellSelectionStyleGray,

    UITableViewCellSelectionStyleDefault NS_ENUM_AVAILABLE_IOS(7_0)

};

    5>accessoryType   //輔助效果

 

      輔助效果爲以下枚舉類型

    

    typedef NS_ENUM(NSInteger, UITableViewCellAccessoryType) {

        UITableViewCellAccessoryNone,                   // don't show any accessory view

        UITableViewCellAccessoryDisclosureIndicator,    // regular chevron. doesn't track

        UITableViewCellAccessoryDetailDisclosureButton, // info button w/ chevron. tracks

        UITableViewCellAccessoryCheckmark,              // checkmark. doesn't track

        UITableViewCellAccessoryDetailButton NS_ENUM_AVAILABLE_IOS(7_0) // info button. tracks

    };

    6>accessoryView 自定義設置頭邊的輔助按鈕    //accessoryView的返回值類型爲UIView

    7>indentationLevel   //縮進

  3,cell控制

    1> -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath  //當accessoryType設置爲button類型時,監聽事件

    2> -(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath  //cell 即將被選中是觸發

    3>-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  //cell已經被選中時觸發

    4>-(NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath  //cell即將被取消時觸發

    5>-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath  //cell被取消時觸發

    ***tableView的一個方法(不是代理方法)[tableView deselectRowAtIndexPath:<#(NSIndexPath *)#> animated:<#(BOOL)#>]//設置選中點擊效果

  4,cell的自定義

    注意,設置行高的方法,是在初始化cell以前執行的。

    1> 因此要想根據數據源中數據的大小來顯示設置cell的行高,必需要在設置行高的方法中計算數據源中每一項的高度

        即在-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 方法內部計算數據源中數據的高度,並返回

    2> 

      -(void)layoutSublayersOfLayer:(CALayer *)layer

      {

          [super layoutSublayersOfLayer:layer];

    

          //cell配置方法中進行賦值,而在該方法中進行對cell中屬性的其它操做

      }

四:cell的重用機制

  1,row是tableView中每條數據展現的位置,cell是負責添加到row上展現相應地數據。

  2,cell的數量,取決於屏幕所能顯示的行數

  3,cell重用機制的優勢:節省內存空間

相關文章
相關標籤/搜索