UItableView的使用主要是其协议方法,其协议有两个
<
UITableViewDelegate
,
UITableViewDataSource
>。
设置
UITableView
的委托(两个委托属性);
tableView.dataSource =
self
;
tableView.delegate =self;
interface DemoViewController () <UITableViewDataSource, UITableViewDelegate>
@end
遵循协议;
<UITableViewDataSource, UITableViewDelegate>
@implementation
DemoViewController
- (
void
)viewDidLoad {
[ super viewDidLoad];
UITableView *tableView = [[UITableView alloc] initWithFrame:reck style:UITableViewStylePlain];
tableView.dataSource = self ;
tableView.delegate = self ;
[ self .view addSubview:tableView];
}
[ super viewDidLoad];
UITableView *tableView = [[UITableView alloc] initWithFrame:reck style:UITableViewStylePlain];
tableView.dataSource = self ;
tableView.delegate = self ;
[ self .view addSubview:tableView];
}
#pragma mark - Table view
协议方法
协议里的两个必须实现的方法:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSecti
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSecti
1,初始化方法:
UITableView
*tableView =[UITableView alloc]initWithFrame:(CGRect);
// style
参数指定样式
,
有两种
:
普通样式
Plain(
默认值
)
、分组样式
Grouped
UITableView
*tableView =[UITableView alloc]initWithFrame:(CGRect) style:(UITableViewStyle)
//
改变换行线颜色。
tableView.separatorColor = [UIColorpurpleColor];
//
判断
tableView
是否能被编辑。
BOOL isEditing = tableView.isEditing;
//
设置
tableView
的能否被编辑
[tableView
setEditing:isEditinganimated:YES];
//
⭐️
重新加载
cell
的内容。
[tableViewreloadRowsAtIndexPaths:[NSArrayarrayWithObjects:indexPath,nil]withRowAnimation:UITableViewRowAnimationNone];
//
同一个
UIView
的赋值给
tv.tableHeaderView
和
tv.tableFooterView
是,只会显示
tv.tableHeaderView
。
tv.
tableHeaderView
=UIView
*
iv;
tv.tableFooterView =
UIView
*
iv
;
//分隔线。
tv.
separatorStyle
=
UITableViewCellSeparatorStyleSingleLine
;
tv.separatorColor = [UIColorgreenColor];
//
tableViewCellde附件种类
tableViewCell
.
accessoryType
//
右侧添加一个索引表。
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;
//
设置
UITableView
中
,
有多少个
Section (
组
)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView ;
//
设置
UITableView
中
,
每个
Section
中有多少个
Cell (
确定矿场一个区域能停多少矿车
)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
/* ========== Cell
设置
Cell
的样式
========== */
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath ;
// 注册cell,与下面的复用机制联用。
[tableView
registerClass
:[
MyTableViewCell
class
]
forCellReuseIdentifier
:
@"MyTableViewCell"
];
//(Cell
的复用机制
),
先去可复用
Cell
队列里面找一下
,
看看是否有可以复用的
Cell//
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:@"Cell"forIndexPath:indexPath];
/* ========== Cell
点击事件
========== */
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
//
设置
Cell
的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath ;
//
设置section的
header
、
footer
的标题
(NSString *)
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section ;
- (
NSString
*)tableView:(
UITableView
*)tableView titleForFooterInSection:(
NSInteger
)section;
//
自定义
section的
header
、
footer (UIView *)
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
- (
UIView
*)tableView:(
UITableView
*)tableView viewForHeaderInSection:(
NSInteger
)section
//
设置
header
、
footer
高度
(CGFloat)
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
- (
CGFloat
)tableView:(
UITableView
*)tableView heightForFooterInSection:(
NSInteger
)section
//
设置某行
Cell
是否可以被编辑
(
是否可以向左滑动
,
拖出编辑按钮
)
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath ;
//
设置所编辑cell
"
删除
"
按钮的
Title
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath ;
//
当编辑按钮
(
默认叫
"
删除
")
被按下去的时候
,
执行的方法
(
类似
Button
点击事件
)
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;
//
将要选择某一个
cell
时。
-( NSIndexPath *)tableView:( UITableView *)tableView willSelectRowAtIndexPath:( NSIndexPath *)indexPath{
if (indexPath. row == 0 ) {
-( NSIndexPath *)tableView:( UITableView *)tableView willSelectRowAtIndexPath:( NSIndexPath *)indexPath{
if (indexPath. row == 0 ) {
return nil; //
设置不让选中每组的第一个。
}
return indexPath;
return indexPath;
}
返回当前所选的
cell
。
NSIndexPath *ip = [NSIndexPath indexPathForRow:row inSection:section];
[tableView selectRowAtIndexPath:ip animated: YES scrollPosition:UITableViewScrollPositionNone];
// 一个 section 刷新
NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex: 2 ];
NSIndexPath *ip = [NSIndexPath indexPathForRow:row inSection:section];
[tableView selectRowAtIndexPath:ip animated: YES scrollPosition:UITableViewScrollPositionNone];
// 一个 section 刷新
NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex: 2 ];
[tableview reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];
//
一个
cell
刷新
NSIndexPath *indexPath=[NSIndexPath indexPathForRow: 3 inSection: 0 ];
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil ] withRowAnimation:UITableViewRowAnimationNone];
NSIndexPath *indexPath=[NSIndexPath indexPathForRow: 3 inSection: 0 ];
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil ] withRowAnimation:UITableViewRowAnimationNone];