艺术详解,常用方法计算之

图片 1
亚洲城ca88手机版官网

通过indexPath找到对应的cell,indexpath对应cell

在- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath

这个方法中通过indexPath找到对应的cell,可以用UITableViewCell *cell =
[tableView cellForRowAtIndexPath:indexPath]来获取

在- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
这个方法中通过indexPa…

图片 1

转载请注明出处:http://blog.csdn.net/qq11231325

**UITableView** : UIScrollView

UITableView : UIScrollView <NSCoding>

1.创建一个UITableView对象

  1. 创建一个 UITableView 对象

UITableView *tableView = [[UITableView
alloc]initWithFrame:[[UIScreen mainScreen] bounds]
style:UITableViewStylePlain];

ITableView *tableView = [[UITableView
alloc]initWithFrame:[[UIScreen mainScreen] bounds]
style:UITableViewStylePlain];

2.separatorColor

2.separatorColor

分割线颜色     tableView.separatorColor = [UIColor redColor];

分割线颜色

3.rowHeight

e.g. ableView.separatorColor = [UIColor redColor];

调整每个cell 点高度(默认 44)  tableView.rowHeight = 60;

3.rowHeight

4.reloadData

调整每个 cell 点高度(默认 44 )

刷新数据     [tableView reloadData];

e.g. tableView.rowHeight = 60;

5.

4.reloadData

两个必须实现的方法 

刷新数据

  1).控制一个section中cell 的多少

e.g. [tableView reloadData];

-(NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section

5.<UITableViewDelegate,UITableViewDataSource>

2).控制cell中的内容

两个必须实现的方法

– (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath

-(NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section

6.选中cell时候使用的方法

控制一个 section 中 cell 的多少

– (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath

  • (UITableViewCell *)tableView:(UITableView *)tableView
    cellForRowAtIndexPath:(NSIndexPath *)

7.取消选中时候用的方法 (不常用)

indexPath

– (void)tableView:(UITableView *)tableView
didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

控制 cell 中的内容

8.控制分区个数

  1. 选中 cell 时候使用的方法

– (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

  • (void)tableView:(UITableView *)tableView
    didSelectRowAtIndexPath:(NSIndexPath *)indexPath

9.section上Header显示的内容

  1. 取消选中时候用的方法 (不常用)

– (NSString *)tableView:(UITableView *)tableView
titleForHeaderInSection:(NSInteger)section

  • (void)tableView:(UITableView *)tableView
    didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

10.section上Footer显示的内容

  1. 控制分区个数

– (NSString *)tableView:(UITableView *)tableView
titleForFooterInSection:(NSInteger)section

  • (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

11.section顶部的高度

9.section 上 Header 显示的内容

– (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section

  • (NSString *)tableView:(UITableView *)tableView
    titleForHeaderInSection:(NSInteger)section

12.cell的高度

10.section 上 Footer 显示的内容

– (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath

  • (NSString *)tableView:(UITableView *)tableView
    titleForFooterInSection:(NSInteger)section

13 该方法返回值用于在表格右边建立一个浮动的索引

11.section 顶部的高度

– (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;

  • (CGFloat)tableView:(UITableView *)tableView
    heightForHeaderInSection:(NSInteger)section

cell相关:

12.cell 的高度

1.返回表格中指定indexPath对应的cell

  • (CGFloat)tableView:(UITableView *)tableView
    heightForRowAtIndexPath:(NSIndexPath *)indexPath

– (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;

13 该方法返回值用于在表格右边建立一个浮动的索引

2.返回指定cell的indexPath

  • ( NSArray *)sectionIndexTitlesForTableView:( UITableView
    *)tableView;

– (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell;

cell相关:

3.返回表格中指定点所在的indexPath

1.返回表格中指定indexPath对应的cell

– (NSIndexPath *)indexPathForRowAtPoint:(CGPoint)point;

  • ( UITableViewCell *)cellForRowAtIndexPath:( NSIndexPath
    *)indexPath;

4.返回表格中指定区域内所有indexPath 组成的数组

2.返回指定cell的indexPath

– (NSArray *)indexPathsForRowsInRect:(CGRect)rect;

  • ( NSIndexPath *)indexPathForCell:( UITableViewCell *)cell;

5.返回表格中所有可见区域内cell的数组

3.返回表格中指定点所在的indexPath

– (NSArray *)visibleCells;

  • ( NSIndexPath *)indexPathForRowAtPoint:( CGPoint )point;

6.返回表格中所有可见区域内cell对应indexPath所组成的数组

4.返回表格中指定区域内所有indexPath 组成的数组

– (NSArray *)indexPathsForVisibleRows;

  • ( NSArray *)indexPathsForRowsInRect:( CGRect )rect;

7.控制该表格滚动到指定indexPath对应的cell的顶端 中间 或者下方

5.返回表格中所有可见区域内cell的数组

– (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath
atScrollPosition:(UITableViewScrollPosition)scrollPosition
animated:(BOOL)animated;

  • ( NSArray *)visibleCells;

8.控制该表格滚动到选中cell的顶端 中间 或者下方

6.返回表格中所有可见区域内cell对应indexPath所组成的数组

-(void)scrollToNearestSelectedRowAtScrollPosition:(UITableViewScrollPosition)scrollPosition
animated:(BOOL)animated;

  • ( NSArray *)indexPathsForVisibleRows;

**处理单元格的选中**

7.控制该表格滚动到指定indexPath对应的cell的顶端 中间 或者下方

1.@property(nonatomic) BOOL allowsSelection   控制该表格是否允许被选中

  • ( void )scrollToRowAtIndexPath:( NSIndexPath *)indexPath
    atScrollPosition:( UITableViewScrollPosition )scrollPosition
    animated:( BOOL )animated;

2.@property(nonatomic) BOOL allowsMultipleSelection
 控制该表格是否允许多选

8.控制该表格滚动到选中cell的顶端 中间 或者下方

3.@property(nonatomic) BOOL allowsSelectionDuringEditing;
 控制表格处于编辑状态时是否允许被选中

-( void )scrollToNearestSelectedRowAtScrollPosition:(
UITableViewScrollPosition )scrollPosition animated:( BOOL )animated;

4.@property(nonatomic) BOOL allowsMultipleSelectionDuringEditing
  控制表格处于编辑状态时是否允许被多选

处理单元格的选中

5.获取选中cell对应的indexPath

1.@property ( nonatomic ) BOOL allowsSelection

– (NSIndexPath *)indexPathForSelectedRow;

控制该表格是否允许被选中

6.获取所有被选中的cell对应的indexPath组成的数组

  1. @property ( nonatomic ) BOOL allowsMultipleSelection

– (NSArray *)indexPathsForSelectedRows

控制该表格是否允许多选

7.控制该表格选中指定indexPath对应的表格行,最后一个参数控制是否滚动到被选中行的顶端
中间 和底部

  1. @property ( nonatomic ) BOOL allowsSelectionDuringEditing;

– (void)selectRowAtIndexPath:(NSIndexPath *)indexPath
animated:(BOOL)animated
scrollPosition:(UITableViewScrollPosition)scrollPosition;

控制表格处于编辑状态时是否允许被选中

8.控制取消选中该表格中指定indexPath对应的表格行

  1. @property ( nonatomic ) BOOL allowsMultipleSelectionDuringEditing

– (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath
animated:(BOOL)animated;

控制表格处于编辑状态时是否允许被多选

9.当用户将要选中表格中的某行时触发方法

5.获取选中cell对应的indexPath

– (NSIndexPath *)tableView:(UITableView *)tableView
willSelectRowAtIndexPath:(NSIndexPath *)indexPath;

  • ( NSIndexPath *)indexPathForSelectedRow;

10.当用户完成选中表格中的某行时触发方法

6.获取所有被选中的cell对应的indexPath组成的数组

-(void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath*)indexPath

  • ( NSArray *)indexPathsForSelectedRows

11.当用户将要取消选中表格中某行时触发

7.控制该表格选中指定indexPath对应的表格行,最后一个参数控制是否滚动到被选中行的顶端
中间 和底部

– (NSIndexPath *)tableView:(UITableView *)tableView
willDeselectRowAtIndexPath:(NSIndexPath *)indexPath

  • ( void )selectRowAtIndexPath:( NSIndexPath *)indexPath animated:(
    BOOL )animated scrollPosition:( UITableViewScrollPosition
    )scrollPosition;

12.当用户完成取消选中表格中某行时触发

8.控制取消选中该表格中指定indexPath对应的表格行

– (void)tableView:(UITableView *)tableView
didDeselectRowAtIndexPath:(NSIndexPath*)indexPath

  • ( void )deselectRowAtIndexPath:( NSIndexPath *)indexPath animated:(
    BOOL )animated;

关于对表格的编辑

<UITableViewDelegate>

1.对表格控件执行多个连续的插入,删除和移动操作之前调用这个方法开始更新

9.当用户将要选中表格中的某行时触发方法

– (void)beginUpdates;

  • ( NSIndexPath *)tableView:( UITableView *)tableView
    willSelectRowAtIndexPath:( NSIndexPath *)indexPath;

2.对表格控件执行多个连续的插入,删除和移动操作之后调用这个方法结束

10.当用户完成选中表格中的某行时触发方法

– (void)endUpdates;

-( void )tableView:( UITableView *)tableView didSelectRowAtIndexPath:(
NSIndexPath *)indexPath

3.在一个或多个indexPath处插入cell

11.当用户将要取消选中表格中某行时触发

– (void)insertRowsAtIndexPaths:(NSArray *)indexPaths
withRowAnimation:(UITableViewRowAnimation)animation;

  • ( NSIndexPath *)tableView:( UITableView *)tableView
    willDeselectRowAtIndexPath:( NSIndexPath *)indexPath

4.删除一个或多个indexPath处的cell

12.当用户完成取消选中表格中某行时触发

– (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths
withRowAnimation:(UITableViewRowAnimation)animation;

  • ( void )tableView:( UITableView *)tableView
    didDeselectRowAtIndexPath:( NSIndexPath *)indexPath

5.将制定indexPath处的cell移动到另个一indexPath处

关于对表格的编辑

– (void)moveRowAtIndexPath:(NSIndexPath *)indexPath
toIndexPath:(NSIndexPath*)newIndexPath

1.对表格控件执行多个连续的插入,删除和移动操作之前调用这个方法开始更新

6.指定的indexSet所包含的一个或多个分区号对应的位置插入分区

  • ( void )beginUpdates;

– (void)insertSections:(NSIndexSet *)sections
withRowAnimation:(UITableViewRowAnimation)animation;

2.对表格控件执行多个连续的插入,删除和移动操作之后调用这个方法结束

7.删除指定indexSet所包含的一个或多个分区号所对应的分区

  • ( void )endUpdates;

– (void)deleteSections:(NSIndexSet *)sections
withRowAnimation:(UITableViewRowAnimation)animation;

3.在一个或多个indexPath处插入cell

8.将指定分区移动到另一个位置

  • ( void )insertRowsAtIndexPaths:( NSArray *)indexPaths
    withRowAnimation:( UITableViewRowAnimation )animation;

– (void)moveSection:(NSInteger)section toSection:(NSInteger)newSection

4.删除一个或多个indexPath处的cell

**@protocol UITableViewDataSource**

  • ( void )deleteRowsAtIndexPaths:( NSArray *)indexPaths
    withRowAnimation:( UITableViewRowAnimation )animation;

9.该方法返回值决定指定indexPath对应的cell是否可以编辑

5.将制定indexPath处的cell移动到另个一indexPath处

– (BOOL)tableView:(UITableView *)tableView
canEditRowAtIndexPath:(NSIndexPath*)indexPath;

  • ( void )moveRowAtIndexPath:( NSIndexPath *)indexPath toIndexPath:(
    NSIndexPath *)newIndexPath

10.该方法返回值决定指定indexPath对应的cell是否可以移动

6.指定的indexSet所包含的一个或多个分区号对应的位置插入分区

– (BOOL)tableView:(UITableView *)tableView
canMoveRowAtIndexPath:(NSIndexPath*)indexPath;

  • ( void )insertSections:( NSIndexSet *)sections withRowAnimation:(
    UITableViewRowAnimation )animation;

11.当用户对指定表格行编辑(包括插入和删除)时触发该方法

7.删除指定indexSet所包含的一个或多个分区号所对应的分区

– (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath*)indexPath;

  • ( void )deleteSections:( NSIndexSet *)sections withRowAnimation:(
    UITableViewRowAnimation )animation;

12.该方法触发移动通常对数据进行处理(重要)

8.将指定分区移动到另一个位置

– (void)tableView:(UITableView *)tableView
moveRowAtIndexPath:(NSIndexPath*)sourceIndexPath
toIndexPath:(NSIndexPath *)destinationIndexPath;

  • ( void )moveSection:( NSInteger )section toSection:( NSInteger
    )newSection

**@protocol UITableViewDelegate**

@protocol UITableViewDataSource< NSObject >

13.开始/完成 编辑时调用的两个方法

9.该方法返回值决定指定indexPath对应的cell是否可以编辑

– (void)tableView:(UITableView*)tableView
willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath;

  • ( BOOL )tableView:( UITableView *)tableView canEditRowAtIndexPath:(
    NSIndexPath *)indexPath;

– (void)tableView:(UITableView*)tableView
didEndEditingRowAtIndexPath:(NSIndexPath*)indexPath;

10.该方法返回值决定指定indexPath对应的cell是否可以移动

14.该方法返回值决定了 indexPath处的cell 的编辑状态返回值为枚举类型
分别为 None Delete Insert

  • ( BOOL )tableView:( UITableView *)tableView canMoveRowAtIndexPath:(
    NSIndexPath *)indexPath;

– (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath;

11.当用户对指定表格行编辑(包括插入和删除)时触发该方法

15.该方法决定了 cell处于被编辑状态时是否应该缩进若未重写
所有cell处于编辑状态时都会缩进

  • ( void )tableView:( UITableView *)tableView commitEditingStyle:(
    UITableViewCellEditingStyle )editingStyle forRowAtIndexPath:(
    NSIndexPath *)indexPath;

– (BOOL)tableView:(UITableView *)tableView
shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath;

12.该方法触发移动 通常对数据进行处理(重要)

**UITableViewCell** : UIView

  • ( void )tableView:( UITableView *)tableView moveRowAtIndexPath:(
    NSIndexPath *)sourceIndexPath toIndexPath:( NSIndexPath
    *)destinationIndexPath;

这里涉及到自定义UITableViewCell 以下为具体步骤以及需要注意到地方

@protocol UITableViewDelegate< NSObject , UIScrollViewDelegate >

1.首先创建一个类继承UITableViewCell

13.开始/完成 编辑时调用的两个方法

2.把自定义cell上到自定义视图全部设置为属性(注意:属性名一定不要和系统属性命重复
e.g.imageView,textLable,detailTextLable)

  • ( void )tableView:( UITableView *)tableView
    willBeginEditingRowAtIndexPath:( NSIndexPath *)indexPath;

  • ( void )tableView:( UITableView *)tableView
    didEndEditingRowAtIndexPath:( NSIndexPath *)indexPath;

3.在cell的初始化方法中
对自定义视图对属性初始化,在初始化对时候可以不指定frame(注意,这里加载到视图上时
加载到contentView 上同时注意内存管理)

14.该方法返回值决定了 indexPath处的cell 的编辑状态 返回值为枚举类型
分别为 None Delete Insert

4.在layoutSubviews方法中完成最后操作
通常给出frame(注意,这个方法为系统自带方法,当一个cell显示到屏幕上之前,最后调用到一个方法,
所有cell到操作 包括赋值,调整高度等 都已经完成一定不要忘记[super
layoutSubviews];)

  • ( UITableViewCellEditingStyle )tableView:( UITableView *)tableView
    editingStyleForRowAtIndexPath:( NSIndexPath *)indexPath;

附加:当一个cell被选中的方法

15.该方法决定了 cell处于被编辑状态时是否应该缩进 若未重写
所有cell处于编辑状态时都会缩进

– (void)setSelected:(BOOL)selected animated:(BOOL)animated

  • ( BOOL )tableView:( UITableView *)tableView
    shouldIndentWhileEditingRowAtIndexPath:( NSIndexPath *)indexPath;

一些小操作:

UITableViewCell : UIView < NSCoding , UIGestureRecognizerDelegate
>

//将单元格的边框设置为圆角

这里涉及到自定义 UITableViewCell 以下为具体步骤以及需要注意到地方

cell.layer.cornerRadius = 12;

  1. 首先创建一个类继承 UITableViewCell

  2. 把自定义 cell
    上到自定义视图全部设置为属性(注意:属性名一定不要和系统属性命重复
    e.g. imageView,textLable,detailTextLable )

  3. 在 cell 的初始化方法中
    对自定义视图对属性初始化,在初始化对时候可以不指定 frame
    (注意,这里加载到视图上时 加载到 contentView 上 同时注意内存管理)

  4. 在 layoutSubviews 方法中完成最后操作 通常给出 frame
    (注意,这个方法为系统自带方法,当一个 cell
    显示到屏幕上之前,最后调用到一个方法, 所有 cell 到操作
    包括赋值,调整高度等 都已经完成 一定不要忘记 [super
    layoutSubviews]; )

cell.layer.masksToBounds = YES;

附加: 当一个 cell 被选中的方法

  • (void)setSelected:(BOOL)selected animated:(BOOL)animated

一些小操作:

// 将单元格的边框设置为圆角

cell. layer . cornerRadius = 12 ;

cell. layer . masksToBounds = YES ;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图