UITableView在开发中是用的最多的控件,它包含两个代理:UITableViewDataSource,UITableViewDelegate,先熟悉下API

1.初始化

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

2.UITableViewStyle

typedef NS_ENUM(NSInteger, UITableViewStyle) {
        UITableViewStylePlain,                  // 平铺样式
        UITableViewStyleGrouped                 // 分组样式
    };

3.style属性

@property (nonatomic, readonly) UITableViewStyle           style;

4.代理

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

5.设置Height

//未设置Height时用下面默认
    @property (nonatomic)          CGFloat                     rowHeight;
    @property (nonatomic)          CGFloat                     sectionHeaderHeight;
    @property (nonatomic)          CGFloat                     sectionFooterHeight;
    //默认为0 nil时表示无预估Height
    @property (nonatomic)          CGFloat                     estimatedRowHeight NS_AVAILABLE_IOS(7_0);
    @property (nonatomic)          CGFloat                     estimatedSectionHeaderHeight NS_AVAILABLE_IOS(7_0);
    @property (nonatomic)          CGFloat                     estimatedSectionFooterHeight NS_AVAILABLE_IOS(7_0);

6.背景视图 自动改变Size适应TableView的尺寸, 做为TableView的子视图放在最底部

@property(nonatomic, readwrite, retain) UIView *backgroundView NS_AVAILABLE_IOS(3_2);

7.刷新数据

- (void)reloadData; //刷新数据
- (void)reloadSectionIndexTitles NS_AVAILABLE_IOS(3_0);//分组时刷新组索引

8.节数行数

 - (NSInteger)numberOfSections; //节数量
 - (NSInteger)numberOfRowsInSection:(NSInteger)section; //节对应的行数

9.获取Rect

- (CGRect)rectForSection:(NSInteger)section;                                    // includes header, footer and all rows
- (CGRect)rectForHeaderInSection:(NSInteger)section;
- (CGRect)rectForFooterInSection:(NSInteger)section;
- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath;

10.Info

//    //获取point点处的NSIndexPath,若点不在任何table中的任意行则返回nil
//    - (NSIndexPath *)indexPathForRowAtPoint:(CGPoint)point;
//    //返回制定UITableViewCell对应的NSIndexPath,不可见返回nil
//    - (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell;
//    //返回矩形包含的NSIndexPath
//    - (NSArray *)indexPathsForRowsInRect:(CGRect)rect;
//     //获取indexPath处的UITableViewCell,若cell不可见或indexPath超出边界返回nil
//    - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;
//    //返回可见的UITableViewCell
//    - (NSArray *)visibleCells;
//    //返回可见行的NSIndexPath数组
//    - (NSArray *)indexPathsForVisibleRows;
//    //获取Section对应的headerViewForSection、footerViewForSection
//    - (UITableViewHeaderFooterView *)headerViewForSection:(NSInteger)section NS_AVAILABLE_IOS(6_0);
//    - (UITableViewHeaderFooterView *)footerViewForSection:(NSInteger)section NS_AVAILABLE_IOS(6_0);

11.滚动

    //滚动到indexPath处
    - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;
    //滚动到选择的行处
    - (void)scrollToNearestSelectedRowAtScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;

12.

//标记了一个tableView的动画块。分别代表动画的开始开始和结束。两者成对出现,可以嵌套使用。一般,在添加,删除,选择 tableView中使用,并实现动效果。在动画块内,不建议使用reloadData方法,如果使用,会影响动画
    - (void)beginUpdates;
    - (void)endUpdates;

13.对节、行的增删改

 - (void)insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
    - (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
    - (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
    - (void)moveSection:(NSInteger)section toSection:(NSInteger)newSection NS_AVAILABLE_IOS(5_0);

    - (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
    - (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
    - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
    - (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath NS_AVAILABLE_IOS(5_0);

14.修改

   //可选中 默认YES
    @property (nonatomic) BOOL allowsSelection NS_AVAILABLE_IOS(3_0);
    //编辑的时候是否可选中  默认NO
    @property (nonatomic) BOOL allowsSelectionDuringEditing;
    //可多选 默认NO
    @property (nonatomic) BOOL allowsMultipleSelection NS_AVAILABLE_IOS(5_0);
    //多选时是否可编辑 默认NO
    @property (nonatomic) BOOL allowsMultipleSelectionDuringEditing NS_AVAILABLE_IOS(5_0);

15.选择

 //选中行的NSIndexPath
    - (NSIndexPath *)indexPathForSelectedRow;
    //选中的多行的NSIndexPaths
    - (NSArray *)indexPathsForSelectedRows;
    //选中indexPath对应的行 滚动到行的位置
    - (void)selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition;
    //取消选择
    - (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated;

16.

//当我们tableView中section有很多,数据量比较大的时候我们可以引入indexList,来方便完成section的定位,例如系统的通讯录程序。我们可以通过设置tableView的sectionIndexMinimumDisplayRowCount属性来指定当tableView中多少行的时候开始显示IndexList,默认NSIntegerMax,即默认不显示indexList
    @property (nonatomic) NSInteger sectionIndexMinimumDisplayRowCount;

17.

//节索引的文本颜色
    @property (nonatomic, retain) UIColor *sectionIndexColor
    //节索引的背景色
    @property (nonatomic, retain) UIColor *sectionIndexBackgroundColor
    //点击时节索引背景色
    @property (nonatomic, retain) UIColor *sectionIndexTrackingBackgroundColor
    //单元格分割线的样式
    @property (nonatomic) UITableViewCellSeparatorStyle separatorStyle;
    //设置单元格分割线的颜色
    @property (nonatomic, retain) UIColor              *separatorColor
    //单元格的毛玻璃效果
    @property (nonatomic, copy) UIVisualEffect               *separatorEffect
    //UITableView的HeaderView
    @property (nonatomic, retain) UIView *tableHeaderView;
    //UITableView的FooterView
    @property (nonatomic, retain) UIView *tableFooterView;

18.

//获取重用队列中的单元格
    - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier;
    //ios6之后出现 需要与registerClass、registerNib配合使用
    - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath
    //获取HeaderFooterView 需要与registerClass、registerNib配合使用
    - (id)dequeueReusableHeaderFooterViewWithIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);
    - (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(5_0);
    - (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);

    - (void)registerNib:(UINib *)nib forHeaderFooterViewReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);
    - (void)registerClass:(Class)aClass forHeaderFooterViewReuseIdentifier:(NSString *)identifier

UIKit 框架之UITableView一的更多相关文章

  1. UIkit框架之UItableview

    1.继承链:UIScrrollView:UIview:UIresponder:NSObject 2.创建实例的时候首先需要确定table的类型 3.一个tableview对象必须要有一个数据源和一个委 ...

  2. UIKit 框架之UITableView二

    // // ViewController.m // UITableView // // Created by City--Online on 15/5/21. // Copyright (c) 201 ...

  3. iOS学习32之UIKit框架-可视化编程-XIB

    1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...

  4. iOS开发UIKit框架-可视化编程-XIB

    1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...

  5. UIKit框架使用总结--看看你掌握了多少

    一.经常使用的,基本就是每次项目迭代都需要使用的 UIView.UILabel.UIImage.UIColor.UIFont.UIImageView.UITextField.UIButton. UIS ...

  6. Swift - 重写UIKit框架类的init初始化方法(以UITabBarController为例)

    原来写了篇文章讲UITabBarController的用法,当时是从UIViewController跳转到UITabBarController页面,代码如下: 1 self.presentViewCo ...

  7. UIKit框架

    在今后的应用程序构建中,会陆续使用各式各样的控件,因此UIKit框架的引入是必不可少的! 一.简介 UIKitk框架提供一系列的Class(类)来建立和管理iPhone OS应用程序的用户界面接口.应 ...

  8. 基础框架Fundation和UIkit框架的定义和使用

    Foundation 框架为所有应用程序提供基本的系统服务 您的应用程序以及 UIKit 和其他框架,都建立在 Foundation 框架的基础结构之上.Foundation 框架提供许多基本的对象类 ...

  9. iOS开发概述UIkit动力学,讲述UIKit的Dynamic特性,UIkit动力学是UIkit框架中模拟真实世界的一些特性。

    转发:http://my.oschina.net/u/1378445/blog/335014 iOS UIKit动力学 Dynamics UIAttachmentBehavior 实现iMessage ...

随机推荐

  1. .NET高级代码审计(第一课)XmlSerializer反序列化漏洞

    0X00 前言 在.NET 框架中的 XmlSerializer 类是一种很棒的工具,它是将高度结构化的 XML 数据映射为 .NET 对象.XmlSerializer类在程序中通过单个 API 调用 ...

  2. SHT20 IIC总线驱动概述

    SHT20温湿度传感器使用iic总线的驱动方式,以下资料参考SHT20 datasheet总结 1.IIC总线 Start信号 IIC总线的起始信号以SDA由高电平变为低电平,等待5us以上,再由SC ...

  3. DevExpress WinForms Controls 学习系列1

    一个偶然的机会,接触到DevExpress.项目是WinForm的,应用了DevExpress.为了使项目具备维护开发的生命力,我觉得有必要系统的学习一下DevExpress,今天是学习笔记的第一篇. ...

  4. MYsql 之单标查询.

    http://www.cnblogs.com/wangfengming/articles/8064956.html .数据操作 .增 INSERT into t2(name,age) VALUES() ...

  5. day72 Ajax 第一天

    第一个示例:(i1+i2 ) 前端数据 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  6. django项目中使用项目环境制作脚本 通过终端命令运行脚本文件

    在实际的django项目开发中,有时候需要制作一些脚本文件对项目数据进行处理,然后通过终端命令运行脚本. 完整的实现流程如下: 1.在一个应用目录下(app, 必须是在应用目录下,可以专门创建一个应用 ...

  7. Aizu 2249Road Construction 单源最短路变形《挑战程序设计竞赛》模板题

    King Mercer is the king of ACM kingdom. There are one capital and some cities in his kingdom. Amazin ...

  8. Flask从入门到精通之使用Flask-Migrate实现数据库迁移

    在开发程序的过程中,你会发现有时需要修改数据库模型,而且修改之后还需要更新数据库.仅当数据库表不存在时,Flask-SQLAlchemy 才会根据模型进行创建.因此,更新表的唯一方式就是先删除旧表,不 ...

  9. 使用.net core读取Json文件配置

    1.使用vs2017创建一个应用台程序 2.使用程序包管理器控制台执行命令 Install-Package Microsoft.AspNetCore -Version 2.0.1 3.创建一个json ...

  10. NSCache 的好处

    相较于 NSDictionary 线程安全 系统资源将要耗尽时,自动删减缓存 自动删减"最久未使用的"对象 不会自动拷贝键.因为有些键不支持拷贝操作 可以和 NSPurgeable ...