`

新风作浪博客学习(十)代码实现 UITableView与UITableViewCell .

    博客分类:
  • ios
ios 
阅读更多
我们常用的表格类视图就是用 UITableView与UITableViewCell,UITableViewController继承UIViewContoller,所以只要很少代码就可以显示一个视图,UITableViewController也是UIScrollView子类,所以也有上下滑动效果 ;UITableView和UITableViewCell不能储存数据,可以用来显示特定行数内的数据,而且,也并不是把所有数据都放在单元格cell视图上,而是通过单元格重用和实现UITableViewDataSource,UITableViewDelegate协议的方法形式显示出来;




1.新建工程名为SampleTable , File->New->Project ->single View Application -> next
[img]

[/img]






2.添加UITableViewDataSource,UITableViewDelegate协议
#import <UIKit/UIKit.h>

@interface STViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>

@property(strong,nonatomic) NSArray *listData;
@property(strong,nonatomic)UITableView *tableView;
@property(strong,nonatomic)UITableViewCell *tableViewCell;

@end



声明了一个存放数据的数组和用于显示单元格的两个对象

2.在@implementation STViewController后面添加上

@synthesize listData=_listData;

@synthesize tableView = _tableView;

@synthesize tableViewCell =_tableViewCell

viewDidLoad中实现对界面初始化工作,UITableView有两种风格,

UITableViewStylePlain    默认风格,最常见的

UITableViewStyleGrouped  圆角矩形风格


[img]

[/img]

[img]

[/img]

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    //初始化表格
    self.tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
// 设置协议,意思就是UITableView类的方法交给了tabView这个对象,让完去完成表格的一些设置操作   
    self.tableView.delegate=self;
    self.tableView.dataSource=self;
    //把tabView添加到视图之上
    [self.view addSubview:self.tableView];   
//    存放显示在单元格上的数据
    NSArray *array = [NSArray arrayWithObjects:@"张三",@"张四",@"张五",@"李三",@"李四",@"李五",@"李六",@"王三",@"王四",@"王五",@"王六",@"王七",@"王八",@"王九",@"王十", nil];
    self.listData = array;
    
}






3.视图上显示单元格的内容以及一些数据都是都是属性都是依赖于协议的代理方法
//返回多少个section
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}


//返回行数,也就是返回数组中所存储数据,也就是section的元素
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.listData count];
}


UITableView每一行都有一个UITableViewCell的实例表示,它也继承UIView,也就是每一行又拥有一个子视图,如果是大型表格,这样开销就非常大,所以就有了单元格的重用;当一部分单元格滚出屏幕后,他们被放在一个可重用的单元序列之中。如果系统运行比较慢,表视图就会从序列中删除这些单元,释放空间,如果有储存空间,表视图就会重新获取这些单元,以后面使用;

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//    声明静态字符串型对象,用来标记重用单元格
    static NSString *TableSampleIdentifier = @"TableSampleIdentifier";
//    用TableSampleIdentifier表示需要重用的单元
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TableSampleIdentifier];
//    如果如果没有多余单元,则需要创建新的单元
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:TableSampleIdentifier];
    }
    
    else {
        while ([cell.contentView.subviews lastObject ]!=nil) {
            [(UIView*)[cell.contentView.subviews lastObject]removeFromSuperview];
        }
    }
//    获取当前行信息值
    NSUInteger row = [indexPath row];
//    填充行的详细内容
    cell.detailTextLabel.text = @"详细内容";
//    把数组中的值赋给单元格显示出来
    cell.textLabel.text=[self.listData objectAtIndex:row];
    
    
//    cell.textLabel.backgroundColor= [UIColor greenColor];
    
//    表视图单元提供的UILabel属性,设置字体大小
    cell.textLabel.font = [UIFont boldSystemFontOfSize:40.0f];
//    tableView.editing=YES;
/*
    cell.textLabel.backgroundColor = [UIColor clearColor];
        UIView *backgroundView = [[UIView alloc] initWithFrame:cell.frame];
    backgroundView.backgroundColor = [UIColor greenColor];
    cell.backgroundView=backgroundView;
   */ 
//    设置单元格UILabel属性背景颜色
    cell.textLabel.backgroundColor=[UIColor clearColor];
//    正常情况下现实的图片
    UIImage *image = [UIImage imageNamed:@"2.png"];
    cell.imageView.image=image;
    
//    被选中后高亮显示的照片
    UIImage *highLightImage = [UIImage imageNamed:@"1.png"];
    cell.imageView.highlightedImage = highLightImage;
    return cell;
}


注释内容中有这两个设置表视图背景颜色的属性方法,具体了解可以看这个博客http://haoxiang.org/2010/12/uitableviewcell-background/  讲的比较详细
cell.textLabel.backgroundColor= [UIColor greenColor];


    cell.textLabel.backgroundColor = [UIColor clearColor];
        UIView *backgroundView = [[UIView alloc] initWithFrame:cell.frame];
    backgroundView.backgroundColor = [UIColor greenColor];
    cell.backgroundView=backgroundView;
   


表示UITableViewCell风格的常量有:

UITableViewCellStyleDefault

UITableViewCellStyleSubtile

UITableViewCellStyleValue1

UITableViewCellStyleValue2
[img]

[/img]

[img]

[/img]

[img]

[/img]

[img]

[/img]




//设置单元格高度
-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 90;

}


//设置单元格缩进
-(NSInteger) tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSInteger row = [indexPath row];
    if (row % 2==0) {
        return 0;
    }
    return 2;
}


//选中单元格所产生事件
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//    首先是用indexPath获取当前行的内容
    NSInteger row = [indexPath row];
//    从数组中取出当前行内容
    NSString *rowValue = [self.listData objectAtIndex:row];
    NSString *message = [[NSString alloc]initWithFormat:@"You selected%@",rowValue];
//    弹出警告信息
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示"
                                                   message:message
                                                  delegate:self
                                         cancelButtonTitle:@"OK"
                                         otherButtonTitles: nil];
    [alert show];
}




- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;

                  这个方法返回指定的 section的header view 的高度。

  - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;

                  这个方法返回指定的 section的footer view 的高度。



为了增加效果,所以界面显得比较丑陋,附上运行结果截图
[img]

[/img]

[img]

[/img]





  • 大小: 182.5 KB
  • 大小: 32 KB
  • 大小: 25.5 KB
  • 大小: 103.1 KB
  • 大小: 111 KB
  • 大小: 113 KB
  • 大小: 99.4 KB
  • 大小: 123.4 KB
  • 大小: 161.6 KB
分享到:
评论

相关推荐

    代码实现 UITableView与UITableViewCell

    这个标题“代码实现UITableView与UITableViewCell”指的是如何通过编程方式设置和管理UITableView及其单元格(UITableViewCell)。在描述中提到了一个链接,指向了CSDN博客上的一篇文章,该文章可能提供了更详细的...

    UITableView与UITableViewCell

    在iOS开发中,UITableView是用于显示数据的一种常见控件,它可以以列表的形式展示信息,而UITableViewCell则是构成这个列表的基本单元,每一行数据对应一个单元格。以下是对UITableView和UITableViewCell的详细解析...

    ios-UITableView的使用.zip

    在iOS开发中,UITableView是一个非常重要的组件,它用于展示数据列表,用户可以通过滚动查看和交互。...通过学习这个例子,开发者可以更好地理解UITableView的工作原理,以及如何根据需求自定义其行为和外观。

    ios-UITableView-Swift.zip

    首先,在故事板(Storyboard)或代码中创建一个新的UITableViewCell子类,并设置其类标识。然后,你可以添加自定义的UI元素,并在`tableView(_:cellForRowAt:)`中进行配置。 注册单元格: 在UITableView初始化时,...

    ios-UITableView气泡连天.zip

    在本项目“ios-UITableView气泡连天.zip”中,我们看到的是一个简单的模拟QQ聊天界面的实现,这涉及到iOS开发中的多个知识点,包括UITableView的使用、自定义UITableViewCell、消息气泡的绘制以及布局管理。...

    纯代码创建UITableView

    在iOS开发中,UITableView是一种非常重要的视图组件,它用于展示列表数据,通常用于实现诸如联系人列表、新闻摘要等功能。...通过实践和学习,你将能够熟练地运用UITableView,实现更多复杂的功能。

    ios-UITableView右侧索引.zip

    总结来说,这个压缩包中的"UitableViewIndexes"文件可能包含了一些示例代码或资源,用于演示如何在UITableView中实现右侧字母索引和分组头部的功能。学习并理解这些知识点对于iOS开发人员来说至关重要,因为它们能够...

    ios-UITableView 展开收起.zip

    在iOS开发中,UITableView是一种非常重要的视图控件,它用于展示...通过学习和理解这些代码,你可以更好地掌握这个功能的实现细节。在实际项目中,还可以根据需求进行定制,例如添加过渡动画、支持多级展开等复杂功能。

    UITableView 详细讲解.

    UITableView 详细讲解

    在UITableView中自定义UITableViewcell实现ibooks图书列表样式

    本篇将详细介绍如何在UITableView中自定义UITableViewCell来实现类似iBooks的图书列表样式。 首先,我们需要创建一个新的UITableViewCell子类。在Xcode中,可以通过File &gt; New &gt; File...,然后选择Cocoa Touch ...

    ios-UITableViewCell折叠效果.zip

    本项目“ios-UITableViewCell折叠效果.zip”主要关注如何实现UITableView中UITableViewCell的动态高度调整以及折叠拉伸效果,这是一项增强用户体验的重要技巧。下面我们将深入探讨这个主题。 首先,我们来理解`...

    ios-一行代码搞定Uitableview 头部下拉放大.zip

    本教程将深入讲解如何通过一行代码实现UITableView头部视图在下拉时放大的功能,这涉及到iOS中的视图动画技术。 首先,我们要了解这个效果的基本原理。当用户下拉UITableView时,我们捕获手势事件,然后动态改变...

    ios-UITableView最佳实践 XIB极速实现UITableViewCell,UITableViewHeaderFooterView.zip

    史上最科学!Swift 3 UITableView最佳实践 XIB极速实现UITableViewCell,UITableViewHeaderFooterView,此处代码由Swift3.1展示,推荐使用Swift,项目已经上传至github中SimplifiedCellHeaderFooter...

    swift-使用Masonry结合UITableView-FDTemplateLayoutCell

    在Swift编程中,开发iOS应用时经常会遇到需要创建自定义表格视图(UITableView)的需求,尤其是在构建聊天界面时。这个项目“swift-使用Masonry结合UITableView-FDTemplateLayoutCell”正是一个实例,它展示了如何...

    UITableView23.zip

    在iOS开发中,UITableView是一个非常重要的控件,用于展示数据列表。这个名为"UITableView23.zip"的压缩包很可能包含...通过阅读博客和查看代码,可以深入学习如何在实际项目中有效利用UITableView展现各种类型的数据。

    iOS、UITableViewCell、自定义

    在iOS开发中,UITableView是展示数据列表的一种常见控件,而UITableViewCell则是表格中的每一行单元格。为了使应用界面更具个性化和用户体验更佳,开发者往往需要对UITableViewCell进行自定义。本话题将深入探讨如何...

    用 UITableView 进行多选的代码例子

    这篇博客"用UITableView进行多选的代码例子"提供了如何实现UITableView多选功能的具体示例。在iOS应用中,多选功能常常用于批量删除、编辑或标记项目。 首先,为了实现多选,我们需要开启UITableView的多选模式。在...

    ios-UITableView的优化.zip

    在iOS开发的过程中,UITableview是使用频率很高的控件之一,今天写的优化方法不是关于性能优化方面的,主要从为Controller瘦身方面考虑的。在使用tableView的时候不可避免的要谈到tableView的delegate和dataSource两...

    UItableView多cell实现

    总结来说,“UItableView多cell实现”是iOS开发中的一项重要技能,通过工厂模式和父类指针的运用,我们可以有效地管理多样的cell,降低代码的复杂度,提高项目的整体质量。在实践中,我们应该不断探索和学习最佳实践...

Global site tag (gtag.js) - Google Analytics