LessonUITableView

//

//  RootViewController.m

//  LessonUITableViewBase

//

//  Created by lanouhn on 15/3/30.

//  Copyright (c) 2015年 小代码. All rights reserved.

//

#import "RootViewController.h"

@interface RootViewController()<UITableViewDataSource, UITableViewDelegate>

@end

@interface RootViewController ()

@end

@implementation RootViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

self.view.backgroundColor = [UIColor grayColor];

self.navigationItem.title = @"首页";

//UITableView, 表示图, 继承于UIScrollView,

//UITableView, 用于去展示一些列具有相同数据格式的内容

//UITableView, 不像word的表格, 只能够展示一列内容

//创建TableView, 指定大小和格式

//格式

//1.UITableViewStylePlain 常规表格(默认)

//2.UITableViewStyleGrouped 组合表格

UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];

//属性

//样式, 只读属性, 只能在初始化的时候进行设定

NSLog(@"%ld", tableView.style);

//行高, 默认高度44

tableView.rowHeight = 44;

//分割线样式

//1.UITableViewCellSeparatorStyleNone, 没有分割线

//2.UITableViewCellSeparatorStyleSingleLine, 单行分割线(默认值)

//3.UITableViewCellSeparatorStyleSingleLine, 单行虚线分割线

tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

//分割线颜色

tableView.separatorColor = [UIColor redColor];

//分割线间距, 只能够修改左右间距

//UIEdgeInsets, 结构体, 成员变量上左下右, 多用于设置四周边距

tableView.separatorInset = UIEdgeInsetsMake(0, 100, 0, 50);

//背景颜色

tableView.backgroundColor = [UIColor yellowColor];

//背景视图

//1.

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1"]];

imageView.frame = self.view.frame;

tableView.backgroundView = imageView;

[imageView release];

/*

//2.无法设置填充方式

UIView *bigView = [[UIView alloc] initWithFrame:self.view.frame];

bigView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"1"]];

tableView.backgroundView = bigView;

[bigView release];

//3.通过图像生成颜色, 缺点, 效率不高, 不能够调整填充模式(和2一个原理)

tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"1"]];

//创建UIImage

//1.通过名字找图片

UIImage *nameImage = [UIImage imageNamed:@"1"];

//2.通过路径找照片

//NSBundle, 包类

//[NSBundle mainBundle] ,找到主包, 就是找到*.app, 所有的资源都放在*.app中

NSString *path = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"png"];

UIImage *pathImage = [UIImage imageWithContentsOfFile:path];

*/

//表头

UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 375, 30)];

headerLabel.text = @"iOS应用排行榜";

headerLabel.textAlignment = NSTextAlignmentCenter;

headerLabel.textColor = [UIColor redColor];

tableView.tableHeaderView = headerLabel;

[headerLabel release];

//表尾

//    UILabel *footerView = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 375, 30)];

//    footerView.text = @"你是猪吗";

//    footerView.textAlignment = NSTextAlignmentCenter;

//    footerView.textColor = [UIColor greenColor];

//    tableView.tableFooterView = footerView;

//    [footerView release];

//消除多余的分割线

tableView.tableFooterView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];

//设置是否允许多选

tableView.allowsMultipleSelection = YES;

//tableView, 想要显示数据, 使用dataSource模式, dataSource实质是代理

//步骤

//1.成为tableView的数据源

//2.实现协议中的两个必须完成的方法

tableView.dataSource = self;

tableView.delegate = self;

[self.view addSubview:tableView];

[tableView release];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

#pragma mark - UITableViewDataSource

//某个分区有多少行

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

NSLog(@"%s", __FUNCTION__);

//只有一个分区, 或者 每个分区行数相等

return 10;

//多个分区, 并且行数不一致

//    if (section == 0) {

//        return 3;

//    } else {

//        return 4;

//    }

}

//显示单元格

//注: 会执行多次, 每走一次, 创建一个cell, 第一次只创建出一个屏幕能够显示的cell, 如果滚动tableView, 会在走这个方法, 再次创建cell

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

//UITableViewCell, 单元格类, 继承UIView, 用于在UITableView上显示内容

//样式

//UITableViewCellStyleDefault, 默认样式, 显示imageView textLabel

//UITableViewCellStyleValue1, 值1 显示imageView textLabel detailTextLabel

//UITableViewCellStyleValue2, 值2 显示textLabel detailTextLabel

//UITableViewCellStyleSubtitle, 子标题 显示imageView textLabel detailTextLabel

/*

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];

//NSIndexPath, 在这里用于存储cell的位置(第几个分区和第一行)

NSLog(@"分区%ld 行数%ld", indexPath.section, indexPath.row);

cell.textLabel.text = [NSString stringWithFormat:@"分区%ld 行数%ld", indexPath.section, indexPath.row];

cell.detailTextLabel.text = @"微软未来或将兼容Androil谷歌陷尴尬境地";

cell.imageView.image = [UIImage imageNamed:@"1"];

//    cell.contentView 是textLabel, detailTextLabel和imageView的父视图

*/

//cell的重用机制(复用机制), 用于降低内存消耗

//1.定义重用标志符

static NSString *cellIdentifier = @"CELL";

//2. 根据标识符, 从复用池中找cell

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

//3.判断是否能够找到cell

if (cell == nil) {

NSLog(@"嘿嘿");

//没有找到cell, 就创建cell

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];

//辅助标示类型

//Checkmark, 对号

//DetailButton, 圆圈里有个‘i‘

//DislosureIndicator, 大于号

//DetailDisclosureButton = DetailButton + DislosureIndicator

cell.accessoryType = UITableViewCellAccessoryCheckmark;

}

//4.设置cell显示的内容

cell.textLabel.text = [NSString stringWithFormat:@"分区%ld 行数%ld", indexPath.section, indexPath.row];

return cell;

}

//分区个数,默认是1

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

return 3;

}

//区头标题

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

NSArray *array = @[@"A", @"B", @"C"];

return array[section];

}

//区尾标题

-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {

NSArray *array = @[@"AAA", @"BBB", @"CCC"];

return array[section];

}

//索引(对应分区)

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {

return @[@"A", @"B", @"C"];

}

#pragma mmark - UITableViewDelegate

//cell高度, 可以为每个cell指定高度

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

if (indexPath.section == 0) {

return 60;

} else {

return 30;

}

}

//区头高度

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

if (section == 1) {

return 100;

} else {

return 50;

}

}

//区尾高度

- (CGFloat)tableView:(UITableView *)tableView HeightForFooterInSection:(NSInteger)section {

return 60;

}

//自定义区头视图

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 375, 44)];

headerView.backgroundColor = [UIColor yellowColor];

return [headerView autorelease];

}

//自定义区尾视图

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {

UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 375, 44)];

footerView.backgroundColor = [UIColor redColor];

return [footerView autorelease];

}

//点击某个cell

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

NSLog(@"点击了第%ld个分区第%ld个cell", indexPath.section, indexPath.row );

}

//取消了

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"点击了第%ld个分区第%ld个cell", indexPath.section, indexPath.row );

}

@end

#############

小作业

//

//  HomeViewController.m

//  LessonUITableViewBase

//

//  Created by lanouhn on 15/3/30.

//  Copyright (c) 2015年 小代码. All rights reserved.

//

#import "HomeViewController.h"

#import "Book.h"

@interface HomeViewController () <UITableViewDataSource>

@property (nonatomic, retain)NSArray *bookArray;

@end

@implementation HomeViewController

- (void)dealloc {

[_bookArray release];

[super dealloc];

}

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

Book *book1 = [[Book alloc] initWithImageName:@"红楼梦.jpg" author:@"曹雪芹" bookName:@"红楼梦"];

Book *book2 = [[Book alloc] initWithImageName:@"西游记.jpg" author:@"吴承恩" bookName:@"西游记"];

Book *book3 = [[Book alloc] initWithImageName:@"三国演义.jpg" author:@"罗贯中" bookName:@"三国演义"];

Book *book4 = [[Book alloc] initWithImageName:@"水浒传.jpg" author:@"施耐庵" bookName:@"水浒传"];

self.bookArray = [NSArray arrayWithObjects:book1, book2, book3, book4,    nil];

[book4 release];

[book3 release];

[book2 release];

[book1 release];

self.view.backgroundColor = [UIColor grayColor];

self.navigationItem.title = @"四大名著";

UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];

tableView.rowHeight = 150;

tableView.separatorStyle = UITableViewCellStyleValue1;

tableView.separatorColor = [UIColor redColor];

tableView.separatorInset = UIEdgeInsetsMake(10, 50, 10, 50);

UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 375, 44)];

headerLabel.text = @"四大名著";

tableView.dataSource = self;

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1"]];

imageView.frame = self.view.frame;

tableView.backgroundView = imageView;

[imageView release];

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

[self.view addSubview:tableView];

[tableView release];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

#pragma mark - UITableViewDataSource

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

return self.bookArray.count;

}

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

static NSString *cellIdentifier = @"CELL";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (cell == nil) {

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier] autorelease];

}

Book *tempBook = [_bookArray objectAtIndex:indexPath.row];

cell.imageView.image = [UIImage imageNamed:tempBook.imageName];

cell.textLabel.text = tempBook.bookName;

cell.detailTextLabel.text = tempBook.authorname;

return cell;

}

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

return 1;

}

@end

时间: 2024-11-08 06:07:59

LessonUITableView的相关文章