IOS_UI_day6_UITableView

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

你可能感兴趣的:(ios,UI,UITableView)