tableview的简单使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tableview的简单使用相关的知识,希望对你有一定的参考价值。

参考技术A UITableView是app开发中常用到的控件,功能很强大,多用于数据的显示。

初始化tableview后,要想显示数据,就必须遵守tableview的数据源代理,而且实现以下方法否则程序会崩溃:

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

该方法决定了tableview的每一行显示什么内容,返回值为UITableViewCell,可以通过设置UITableViewCell的各种属性(image,label..)从而达到想要的效果,或者自定义Cell,关于自定义cell在后面会做相关介绍

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

该方法决定了每一组(section)中有几个cell

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

该方法决定了tabview显示几组,这个方法不一定要实现,如果不实现默认显示一组

如果想要实现对tableview 的操作(如:点击每一个cell能获得相应)则必须遵守UITableViewDelegate协议,成为代理

以下是几个比较常用的方法

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

该方法可以设置每个cell 的高度

- (nullable UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;  

该方法可以自定义每个组的头部(图片,按钮等等)

- (nullable UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;

该方法可以自定义每个组的尾部(图片,按钮等等)

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

该方法获取当前点击的cell的indexPath(结构体,包括了section和row)

如何复制粘贴剪切一个cell

遵守UITableViewDelegate协议,并实现以下方法

该方法决定在长按cell后 是否显示 复制粘贴 菜单

-(BOOL)collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath

return YES;



该方法决定 菜单上显示什么按钮

-(BOOL)collectionView:(UICollectionView *)collectionView canPerformAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender

//    不显示剪切的按钮

if (action==@selector(copy:)||action==@selector(paste:))

return YES;

else

return NO;





该方法决定 点击菜单上的复制粘贴按钮 后干啥

-(void)collectionView:(UICollectionView *)collectionView performAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender{

if (action==@selector(copy:))

       NSLog(@"copy!");

else if(action==@selector(paste:))

       NSLog(@"paste!");



cell 的编辑

设置cell能否被编辑

-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

return YES;



设置删除按钮的文字

-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

return @"删除";



实现cell 的编辑,通过editingStyle做不同操作

editingStyle:是编辑模式是枚举类型,有以下三种

UITableViewCellEditingStyleNone,

UITableViewCellEditingStyleDelete,

UITableViewCellEditingStyleInsert

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



  }

UITableViewCell的使用

创建TableViewCell

UITableViewCell *cell=[UITableViewCell alloc]initWithStyle:<#(UITableViewCellStyle)#> reuseIdentifier:<#(nullable NSString *)#>]

reuseIdentifier:重用标识符,定义重用标识符可以实现cell的复用、

TableViewCell的重用:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"newscell"];

//复用重用标识符为newscell的cell

if (cell == nil)

//没有重用标识符为newsreel的cell 创建一个cell并且设置重用标识符

cell=[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"newsreel"];



//注册tableviewcell,这样就不需要对cell进行为空判断

[tableView registerClass:<#(nullable Class)#> forCellReuseIdentifier:<#(nonnull NSString *)#>]

//使用xib创建cell,使用下面的方法进行tableviewcell的注册

[tableView registerNib:<#(nullable UINib *)#> forCellReuseIdentifier:<#(nonnull NSString *)#>]

如何在 UIViewController 中使用 TableView?

【中文标题】如何在 UIViewController 中使用 TableView?【英文标题】:How to use a TableView inside a UIViewController? 【发布时间】:2012-11-13 15:31:23 【问题描述】:

我想向我的 UIView 添加一个简单的静态 TableView。所以我把它拖到我的 UIView 中。将 TableViewDataSource 和委托协议添加到我的 ViewController 类。为我的表格视图创建了一个出口,并将数据源和委托出口连接到视图控制器。 但我仍然收到一条错误消息,指出静态表视图仅在嵌入 UITableViewCOntroller 实例时才有效?任何想法如何解决这个问题? PS:我正在使用 UIStoryboards 来设计 UI

【问题讨论】:

【参考方案1】:

使用一个containerView(将一个拖到你的UIView上),它将链接到一个UITableViewController。您将使用 prepareForSegue 方法来初始化表视图控制器。 哦,你可能想接受对你有帮助的答案,或者没有人会再帮助你了。

【讨论】:

【参考方案2】:

如果您想要静态单元格,请在 Storyboard 中单击 tableview,然后在检查器中,将 Content 从“Dynamic Prototypes”更改为 Static Cells。您还可以将这些单元格分隔到新控制器,而无需为表设置数据源和委托。

【讨论】:

以上是关于tableview的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

简单天气应用开发——自定义TableView

Snapkit:如何在 scrollView 中嵌入一个简单的 tableView?

简单的TableView单组数据展示/多组数据展示

更改 TableView 标题文本颜色

点击状态栏让tableview回到顶部最简单的方法

Swift初窥--使用Swift实现TableView