UITableView 和 UITableViewCell 的基本配置和常用属性

一:UITableView的几个重要属性

  1,style样式, 在初始化时设置

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

    其中UITableViewStyle枚举类型为:

     typedef NS_ENUM(NSInteger, UITableViewStyle) {

        UITableViewStylePlain,                  // regular table view

        UITableViewStyleGrouped                 // preferences style table view

      };

   2,separatorStyle 分割线样式

      @property (nonatomic) UITableViewCellSeparatorStyle separatorStyle;

      其中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重用机制的优点:节省内存空间

转载于:https://www.cnblogs.com/puguanen-ecit/p/4733053.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值