H:/IOS_UI/day6-01-UITableView多组数据展示-MJViewController.h
//
// MJViewController.h
// 01-UITableView01-多组数组展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface MJViewController : UIViewController
@end
H:/IOS_UI/day6-01-UITableView多组数据展示-MJViewController.m
//
// MJViewController.m
// 01-UITableView01-多组数组展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import "MJViewController.h"
@interface MJViewController () <UITableViewDataSource>
{
NSArray *_gdCities;
NSArray *_hnCities;
NSArray *_hbCities;
}
@end
@implementation MJViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// 1.添加tableView
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
//控制器成为数据源,实现<UITableViewDataSource>协议,主动提供数据
tableView.dataSource = self;
[self.view addSubview:tableView];
// 2.初始化数据
// 广东
_gdCities = @[@"广州", @"深圳", @"梅州"];
// 湖南
_hnCities = @[@"长沙", @"益阳"];
// 湖北
_hbCities = @[@"武汉", @"黄冈"];
}
#pragma mark - 数据源方法
#pragma mark 一共有多少组(section == 区域\组)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// NSLog(@"numberOfSections");
return 3;
}
#pragma mark 第section组一共有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// NSLog(@"numberOfRows");
if (section == 0) { // 广东
// return 4;
return _gdCities.count;
} else if (section == 1) { // 湖南
// return 3;
return _hnCities.count;
} else { // 湖北
return _hbCities.count;
}
}
#pragma mark 返回每一行显示的内容(每一行显示怎样的cell)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// NSLog(@"cellForRow----");
// indexPath标识唯一的一行
// 第section组的第row行
// indexPath.row == 0
// indexPath.section == 1
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
// 设置cell显示的文字
NSString *text = nil;
if (indexPath.section == 0) { // 广东
// if (indexPath.row == 0) {
// text = @"广州";
// } else if (indexPath.row == 1) {
// text = @"深圳";
// } else if (indexPath.row == 2) {
// text = @"梅州";
// } else if (indexPath.row == 3) {
// text = @"东莞";
// }
text = _gdCities[indexPath.row];
} else if (indexPath.section == 1) { // 湖南
// if (indexPath.row == 0) {
// text = @"长沙";
// } else if (indexPath.row == 1) {
// text = @"益阳";
// } else if (indexPath.row == 2) {
// text = @"岳阳";
// }
text = _hnCities[indexPath.row];
} else { // 湖北
text = _hbCities[indexPath.row];
}
cell.textLabel.text = text;
// cell.textLabel.text = [NSString stringWithFormat:@"第%d组 第%d行的数据", indexPath.section, indexPath.row];
// NSLog(@"section=%d row=%d", indexPath.section, indexPath.row);
return cell;
}
@end
H:/IOS_UI/day6-02-UITableView多组数据展示-MJViewController.h
//
// MJViewController.h
// 01-UITableView01-多组数组展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface MJViewController : UIViewController
@end
H:/IOS_UI/day6-02-UITableView多组数据展示-MJViewController.m
//
// MJViewController.m
// 01-UITableView01-多组数组展示
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import "MJViewController.h"
// 省份字典中用到的key
#define kHeader @"header" // 头部标题对应的key
#define kFooter @"footer" // 尾部标题对应的key
#define kCities @"cities" // 城市数组对应的key
@interface MJViewController () <UITableViewDataSource>
{
// NSArray *_allCities; // 所有的城市
NSArray *_allProvinces; // 所有的省份
}
@end
@implementation MJViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// 1.添加tableView
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
//设置控制器为数据源
tableView.dataSource = self;
[self.view addSubview:tableView];
// 2.初始化数据,字典数组,每个成员是一个字典,字典里有三对K_V,第3对的V是一个城市名组成的数组
_allProvinces = @[
@{
kHeader : @"广东",
kFooter : @"广东好",
kCities : @[@"广州", @"深圳", @"梅州"]
},
@{
kHeader : @"湖南",
kFooter : @"湖南也好",
kCities : @[@"长沙", @"益阳"]
},
@{
kHeader : @"湖北",
kFooter : @"湖北更好",
kCities : @[@"武汉", @"黄冈"]
}
];
// _allCities = @[
// ,
// ,
// @[@"武汉", @"黄冈"],
// @[@"桂林", @"玉林"],
// @[@"杭州", @"温州"],
// @[@"合肥", @"安庆"]
// ];
}
#pragma mark - 数据源方法
#pragma mark 一共有多少组(section == 区域\组)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return _allProvinces.count;
}
#pragma mark 第section组一共有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// 1.取得第section组的省份
NSDictionary *province = _allProvinces[section];
// 2.取得省份里面的城市数组
NSArray *cities = province[kCities];
return cities.count;
// // 1.取得第section组的所有城市
// NSArray *sectionCities = _allCities[section];
// // 2.第section组城市的个数
// return sectionCities.count;
}
#pragma mark 返回每一行显示的内容(每一行显示怎样的cell)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
// NSString *text = _allCities[indexPath.section][indexPath.row];
// NSArray *sectionCities = _allCities[indexPath.section];
// 1.取出第section组第row行的文字数据
// 取出第section组的省份 中 城市数组里面 第 row行的 数据
NSDictionary *province = _allProvinces[indexPath.section];
NSArray *cities = province[kCities];
NSString *text = cities[indexPath.row];
// 2.展示文字数据
cell.textLabel.text = text;
return cell;
}
#pragma mark 第section组显示的头部标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
// if (section == 0) return @"广东";
// if (section == 1) return @"湖南";
// if (section == 2) return @"湖北";
// if (section == 3) return @"广西";
// if (section == 4) return @"浙江";
// if (section == 5) return @"安徽";
NSDictionary *province = _allProvinces[section];
return province[kHeader];
}
#pragma mark 第section组显示的尾部标题
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
// if (section == 0) return @"广东好";
// if (section == 1) return @"湖南也好";
// if (section == 2) return @"湖北更好";
// if (section == 3) return @"广西一般般";
// if (section == 4) return @"浙江应该可以吧";
// if (section == 5) return @"安徽确实有点坑爹";
return _allProvinces[section][kFooter];
}
@end
H:/IOS_UI/day6-03-UITableView多组数据展示-MJViewController.h
//
// MJViewController.h
// 01-UITableView01-多组数组展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface MJViewController : UIViewController
@end
H:/IOS_UI/day6-03-UITableView多组数据展示-MJViewController.m
//
// MJViewController.m
// 01-UITableView01-多组数组展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import "MJViewController.h"
#import "Province.h"
@interface MJViewController () <UITableViewDataSource>
{
NSArray *_allProvinces; // 所有的省份
}
@end
@implementation MJViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// 1.添加tableView
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
tableView.dataSource = self;
[self.view addSubview:tableView];
// 2.初始化数据
// 广东(模型对象,数据模型,Model,仅仅是用来存放数据的对象)
Province *gd = [Province provinceWithHeader:@"广东" footer:@"广东好" cities:@[@"广州", @"深圳"]];
// gd.header = @"广东";
// gd.footer = @"广东好";
// gd.citites = @[@"广州", @"深圳", @"梅州"];
// 湖南
Province *hn = [Province provinceWithHeader:@"湖南" footer:@"湖南也好" cities:@[@"长沙"]];
// hn.header = @"湖南";
// hn.footer = @"湖南也好";
// hn.citites = @[@"长沙", @"益阳"];
// 湖北
// Province *hb = [[Province alloc] init];
// hb.header = @"湖北";
// hb.footer = @"湖北更好";
// hb.citites = @[@"武汉", @"黄冈"];
// 广西
// Province *gx = [[Province alloc] init];
// gx.header = @"广西";
// gx.footer = @"广西好好好";
// gx.citites = @[@"桂林", @"南宁"];
_allProvinces = @[ gd, hn ];
}
#pragma mark - 数据源方法
#pragma mark 一共有多少组(section == 区域\组)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return _allProvinces.count;
}
#pragma mark 第section组一共有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// 1.取得第section组的省份
Province *province = _allProvinces[section];
// 2.取得省份里面的城市数组
return province.citites.count;
}
#pragma mark 返回每一行显示的内容(每一行显示怎样的cell)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
Province *province = _allProvinces[indexPath.section];
// 展示文字数据
cell.textLabel.text = province.citites[indexPath.row];
return cell;
}
#pragma mark 第section组显示的头部标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
Province *province = _allProvinces[section];
// return province.header;
return [province header];
}
#pragma mark 第section组显示的尾部标题
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
return [_allProvinces[section] footer];
}
@end
H:/IOS_UI/day6-03-UITableView多组数据展示-Province.h
//
// Province.h
// 01-UITableView01-多组数组展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Province : NSObject
// UI控件用weak,NSString用copy,其他对象一般用strong
@property (nonatomic, copy) NSString *header;
@property (nonatomic, copy) NSString *footer;
@property (nonatomic, strong) NSArray *citites;
+ (id)provinceWithHeader:(NSString *)header footer:(NSString *)footer cities:(NSArray *)cities;
@end
H:/IOS_UI/day6-03-UITableView多组数据展示-Province.m
//
// Province.m
// 01-UITableView01-多组数组展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import "Province.h"
@implementation Province
+ (id)provinceWithHeader:(NSString *)header footer:(NSString *)footer cities:(NSArray *)cities
{
Province *p = [[Province alloc] init];
p.header = header;
p.footer = footer;
p.citites = cities;
return p;
}
@end
H:/IOS_UI/day6-04-UITableView多组数据展示-MJViewController.h
//
// MJViewController.h
// 01-UITableView01-多组数组展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface MJViewController : UIViewController
@end
H:/IOS_UI/day6-04-UITableView多组数据展示-MJViewController.m
//
// MJViewController.m
// 01-UITableView01-多组数组展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import "MJViewController.h"
#import "Province.h"
@interface MJViewController () <UITableViewDataSource>
{
NSArray *_allProvinces; // 所有的省份
}
@end
@implementation MJViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// 1.添加tableView
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
tableView.dataSource = self;
[self.view addSubview:tableView];
// 2.初始化数据
_allProvinces = @[
[Province provinceWithHeader:@"广东" footer:@"广东好" cities:@[@"广州", @"深圳"]],
[Province provinceWithHeader:@"湖南" footer:@"湖南也好" cities:@[@"长沙"]],
[Province provinceWithHeader:@"广东2" footer:@"广东好" cities:@[@"广州", @"深圳"]],
[Province provinceWithHeader:@"湖南2" footer:@"湖南也好" cities:@[@"长沙"]]
];
}
#pragma mark - 数据源方法
#pragma mark 一共有多少组(section == 区域\组)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return _allProvinces.count;
}
#pragma mark 第section组一共有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// 1.取得第section组的省份
Province *province = _allProvinces[section];
// 2.取得省份里面的城市数组
return province.citites.count;
}
#pragma mark 返回每一行显示的内容(每一行显示怎样的cell)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
Province *province = _allProvinces[indexPath.section];
// 展示文字数据
cell.textLabel.text = province.citites[indexPath.row];
return cell;
}
#pragma mark 第section组显示的头部标题
//- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
//{
// Province *province = _allProvinces[section];
//
//// return province.header;
// return [province header];
//}
#pragma mark 第section组显示的尾部标题
//- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
//{
// return [_allProvinces[section] footer];
//}
#pragma mark 返回表格右边的显示的索引条
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
NSMutableArray *titles = [NSMutableArray array];
for (Province *p in _allProvinces) {
[titles addObject:p.header];
}
return titles;
}
@end
H:/IOS_UI/day6-04-UITableView多组数据展示-Province.h
//
// Province.h
// 01-UITableView01-多组数组展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Province : NSObject
// UI控件用weak,NSString用copy,其他对象一般用strong
@property (nonatomic, copy) NSString *header;
@property (nonatomic, copy) NSString *footer;
@property (nonatomic, strong) NSArray *citites;
+ (id)provinceWithHeader:(NSString *)header footer:(NSString *)footer cities:(NSArray *)cities;
@end
H:/IOS_UI/day6-04-UITableView多组数据展示-Province.m
//
// Province.m
// 01-UITableView01-多组数组展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import "Province.h"
@implementation Province
+ (id)provinceWithHeader:(NSString *)header footer:(NSString *)footer cities:(NSArray *)cities
{
Province *p = [[Province alloc] init];
p.header = header;
p.footer = footer;
p.citites = cities;
return p;
}
@end
H:/IOS_UI/day6-05-UITableView单组数据展示-MJViewController.h
//
// MJViewController.h
// 02-UITableView02-单组数据展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface MJViewController : UIViewController
@end
H:/IOS_UI/day6-05-UITableView单组数据展示-MJViewController.m
//
// MJViewController.m
// 02-UITableView02-单组数据展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import "MJViewController.h"
@interface MJViewController () <UITableViewDataSource, UITableViewDelegate>
@end
@implementation MJViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
#pragma mark 一共1组
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
#pragma mark 这一组里面有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 9;
}
#pragma mark 返回第indexPath这行对应的内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
/*
Default : 不显示detailTextLabel
Value1 : 在右边显示detailTextLabel
Value2 : 不显示图片,显示detailTextLabel
Subtitle : 在底部显示detailTextLabel
*/
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];
cell.textLabel.text = [NSString stringWithFormat:@"产品-%d", indexPath.row];
// 设置详情文字
cell.detailTextLabel.text = [NSString stringWithFormat:@"产品-%d非常好!!!!!", indexPath.row];
// 设置图片
NSString *imgName = [NSString stringWithFormat:@"00%d.png", indexPath.row + 1];
cell.imageView.image = [UIImage imageNamed:imgName];
// 设置最右边的小图标
// if (indexPath.row % 2 == 0) {
// cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
// } else {
// cell.accessoryType = UITableViewCellAccessoryNone;
// }
// 设置最右边的显示什么控件
cell.accessoryView = [UIButton buttonWithType:UIButtonTypeContactAdd];
return cell;
}
#pragma mark - 代理方法
#pragma mark 返回indexPath这行cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// return 70 + indexPath.row * 20;
return 70;
}
@end
H:/IOS_UI/day6-06-UITableView单组数据展示-MJViewController.h
//
// MJViewController.h
// 02-UITableView02-单组数据展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface MJViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@end
H:/IOS_UI/day6-06-UITableView单组数据展示-MJViewController.m
//
// MJViewController.m
// 02-UITableView02-单组数据展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import "MJViewController.h"
#import "Shop.h"
@interface MJViewController () <UITableViewDataSource, UITableViewDelegate, UIAlertViewDelegate>
{
//成员变量,可变数组
NSMutableArray *_shops;
}
@end
@implementation MJViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// 创建数组
_shops = [NSMutableArray array];
// 创建数据
Shop *shop1 = [Shop shopWithName:@"图书/音像" icon:@"001.png" desc:@"小说,情感,卡拉OK"];
Shop *shop2 = [Shop shopWithName:@"母婴用品" icon:@"002.png" desc:@"防尿,奶粉,喂养"];
Shop *shop3 = [Shop shopWithName:@"玩具" icon:@"003.png" desc:@"卡车,积木,鸡毛"];
//向可变数组中添加固定数组
[_shops addObjectsFromArray:@[shop1, shop2, shop3]];
// 添加其他假数据
// for (int i = 0; i<20; i++) {
// NSString *name = [NSString stringWithFormat:@"随机产品-%d", i];
// NSString *desc = [NSString stringWithFormat:@"%@ - 好好好", name];
// NSString *icon = [NSString stringWithFormat:@"00%d.png", (i % 9) + 1];
// Shop *shop = [Shop shopWithName:name icon:icon desc:desc];
//
// [_shops addObject:shop];
// }
}
#pragma mark 一共1组
//- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
//{
// 不实现此方法,默认就认为是1组
// return 1;
//}
#pragma mark 这一组里面有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"numberOfRows----");
return _shops.count;
}
#pragma mark 返回第indexPath这行对应的内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"cellForRow---%d", indexPath.row);
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];
// 取出这行对应的产品
Shop *shop = _shops[indexPath.row];
// 产品名称
cell.textLabel.text = shop.name;
// 产品描述
cell.detailTextLabel.text = shop.desc;
// 产品图片
cell.imageView.image = [UIImage imageNamed:shop.icon];
// 右边的箭头
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
#pragma mark - 代理方法
#pragma mark 返回indexPath这行cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// return 70 + indexPath.row * 20;
return 70;
}
#pragma mark 监听TableView的某一行被点击了!选中了某一行的cell就会调用
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// 0.取出所点击这行的产品对象
Shop *shop = _shops[indexPath.row];
// 1.创建弹框,虽然UIAlertView alert是局部变量,但是不会运行完即被销毁???
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"产品信息展示" message:nil
delegate:self cancelButtonTitle:@"取消"
otherButtonTitles:@"确定", nil];
// 设置样式(一个明文文本框)
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
// 设置第0个文本框的默认文字
[alert textFieldAtIndex:0].text = shop.name;
// 2.显示弹框
[alert show];
// 3.设置alertView的tag为行号,方便AlertView调用代理的方法,响应点击事件
alert.tag = indexPath.row;
}
#pragma mark - alertview被点击的时候会调用代理的该方法
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
//如果是点击左边的取消按钮.直接返回
if (buttonIndex == 0) return;
// 1.取出AlertView的第0个文本框的内容
NSString *text = [alertView textFieldAtIndex:0].text;
// 2.将文字更新到对应的cell上面去
// alertView的tag就是TabelView被点击时代理方法内绑定的行号
int row = alertView.tag;
// 2.1.重新赋值对应位置的模型数据
Shop *shop = _shops[row];
shop.name = text;
// 2.2.刷新表格
// [_tableView reloadData]; // 重量级!慎用!整体刷新(每一行都会刷新)
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row
inSection:0];
NSArray *paths = @[indexPath];
//局部刷新技术
[_tableView reloadRowsAtIndexPaths:paths
withRowAnimation:UITableViewRowAnimationLeft];
/*
重新向数据源索取数据
重新向数据源发送消息
重新调用数据源的方法,根据返回值决定显示什么数据
*/
// if (buttonIndex == 1) {
//
// }
}
@end
H:/IOS_UI/day6-06-UITableView单组数据展示-Shop.h
//
// Shop.h
// 02-UITableView02-单组数据展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Shop : NSObject
// 图片
@property (nonatomic, copy) NSString *icon;
// 名称
@property (nonatomic, copy) NSString *name;
// 描述
@property (nonatomic, copy) NSString *desc;
+ (id)shopWithName:(NSString *)name icon:(NSString *)icon desc:(NSString *)desc;
// <# #>
// <# #>
@end
H:/IOS_UI/day6-06-UITableView单组数据展示-Shop.m
//
// Shop.m
// 02-UITableView02-单组数据展示
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import "Shop.h"
@implementation Shop
+ (id)shopWithName:(NSString *)name icon:(NSString *)icon desc:(NSString *)desc
{
Shop *shop = [[Shop alloc] init];
shop.icon = icon;
shop.name = name;
shop.desc = desc;
return shop;
}
@end
H:/IOS_UI/day6-07-UITableView性能优化-MJViewController.h
//
// MJViewController.h
// 03-UITableView03-性能优化
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface MJViewController : UIViewController
@end
H:/IOS_UI/day6-07-UITableView性能优化-MJViewController.m
//
// MJViewController.m
// 03-UITableView03-性能优化
//
// Created by apple on 13-11-28.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import "MJViewController.h"
@interface MJViewController () <UITableViewDataSource,
UITableViewDelegate>
@end
@implementation MJViewController
- (void)viewDidLoad
{
[super viewDidLoad];
UITableView *tableView = [[UITableView alloc]
initWithFrame:self.view.bounds style:UITableViewStylePlain];
//设置数据源为:控制器,提供数据
tableView.dataSource = self;
//设置代理也为:控制器,响应点击事件
tableView.delegate = self;
[self.view addSubview:tableView];
}
#pragma mark - 数据源方法
#pragma mark 行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 300;
}
#pragma mark 返回每一行的cell
#pragma mark 每当有一个cell进入视野范围内就会调用
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//设置重用标识!static内存只有一份,减少开支
static NSString *ID = @"C1";
// 1.通过重用标识,从缓存池中取出可循环利用的cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// 2.如果缓存池中没有可循环利用的cell,创建新的cell
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}
//设置cell里面独一无二的内容
cell.textLabel.text = [NSString stringWithFormat:@"第%d行数据", indexPath.row];
return cell;
}
#pragma mark - tableView代理的方法,告诉每行的高度应该是多少
#pragma mark 每行的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 170;
}
@end