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. C++单继承的构造函数和析构函数调用的顺序

    1.继承构造函数调用顺序以及销毁的过程 先调用父类的构造函数,在调用子类的构造函数,析构函数调用相反.

  2. 在QtCreater中配置Artistic Style格式化Qt程序源代码!!

    Qt很吸引人,可能是我对Qt开发工具QtCreater不熟悉,只发现里面提供了一个快捷键:"ctrl+i",很多人说这就是格式化代码快捷键,我发现这仅仅是代码缩进,并不是真正意义上 ...

  3. Redis的快照

    博客链接:http://www.cnblogs.com/zhenghongxin/p/8669913.html redis 本地持久化到硬盘有两种方式,一是快照(snapshotting),二是只追加 ...

  4. python 设置默认的导包路径

    在python中 可以通过 sys 模块添加导包时的搜寻路径, sys.path 返回的是所有默认导包路径的列表(搜索次序从下标为零开始,直到寻找到需要导入的包结束) sys.path.insert( ...

  5. Memoization-329. Longest Increasing Path in a Matrix

    Given an integer matrix, find the length of the longest increasing path. From each cell, you can eit ...

  6. java.util包详解

    介绍Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结 ...

  7. 【wireshark】插件开发(四):Lua插件Post-dissector和Listener

    1. Post-dissector post-dissector和dissector不同,它会在所有dissectors都执行过后再被执行,这也就post前缀的由来.post-dissector的构建 ...

  8. JVM内存参数( -Xms -Xmx -Xmn -Xss 直接内存)

    JVM调优总结 -Xms -Xmx -Xmn -Xss jvm 内存 在不同的情况下如何增大 及 PermGen space 相关 JVM日志和参数的理解 JVM崩溃Log日志分析 -Xms 为jvm ...

  9. day 49 数据分析, 数据聚合 F 查询 Q 查询

    6.聚合查询和分组查询 1.聚合查询aggregate 我们先通过一个例子来感受一下吧. 1 2 3 # 计算所有图书的平均价格 books = models.Book.objects.aggrega ...

  10. zabbix数据库表结构解析

     下面开始介绍: 1.添加监控表结构详解 (1)hosts,存储被监控的机器的信息,表结构如下: (2)items (3)hosts_templates,存储机器和模版或者模版和模版之间的关系 由于模 ...