iOS_10_tableView的简单使用_红楼十二钗

终于效果图:

方式1,用字典数组

BeyondViewController.h

//
//  BeyondViewController.h
//  10_tableView
//
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface BeyondViewController : UIViewController

@end

BeyondViewController.m

//
//  BeyondViewController.m
//  10_tableView
//
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import "BeyondViewController.h"
#define kHeader @"header"
#define kFooter @"footer"
#define kGirlsArr @"girls"

@interface BeyondViewController ()<UITableViewDataSource>
{
    // 假数据
    NSArray *_array;
}
@end

@implementation BeyondViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // 假数据 方式1 用字典
    _array = @[ @{kHeader: @"十二钗正冊",
                 kGirlsArr:@[@"林黛玉",@"薛宝钗",@"贾元春",@"贾探春",@"史湘云",@"妙玉",@"贾迎春",@"贾惜春",@"王熙凤",@"贾巧姐",@"李纨",@"秦可卿"],
                 kFooter:@"红楼梦"
                 },
               @{kHeader: @"十二钗副冊",
                 kGirlsArr:@[@"香菱",@"薛宝琴",@"尤二姐",@"尤三姐",@"邢岫烟",@"李纹",@"李绮",@"夏金桂",@"秋桐",@"小红",@"龄官",@"娇杏"],
                 kFooter:@"红楼梦"
                 },
               @{kHeader: @"十二钗又副冊",
                 kGirlsArr:@[@"晴雯",@"袭人",@"平儿",@"鸳鸯",@"紫鹃",@"莺儿",@"玉钏",@"金钏",@"彩云",@"司棋",@"芳官",@"麝月"],
                 kFooter:@"红楼梦"
                 }
               ];
    // 假数据 方式2 用类封装

    // 样式仅仅有两种 Grouped Plain
	UITableView *tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
    // 数据源
    tableView.dataSource = self;
    // 加入到self.view
    [self.view addSubview:tableView];
}
// 数据源方法,特例,重要~ 一共同拥有多少个分组
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return _array.count;
}
// 数据源方法,每一组,有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // 返回数组中相应的字典的长度
    return [[_array[section] objectForKey:kGirlsArr] count];
}
// 数据源方法,每一组的每一行应该显示怎么的界面(含封装的数据),重点!!!必须实现否则,Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellID = @"Beyond";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if (cell == nil) {
        // 假设池中没取到,则又一次生成一个cell
        /*
            cell的4种样式:
            1,default   左图右文字
            2,subtitle  左图  上文字大    下文字小
            3,value 1   左图  左文字大    右文字小
            3,value 2   恶心  左文字小    右文字大
         */
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
    }
    // 设置cell中独一无二的内容
    cell.textLabel.text = [_array[indexPath.section] objectForKey:kGirlsArr][indexPath.row];
    // 返回cell
    return cell;
}
// 数据源方法,组的开头显示什么标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return [_array[section] objectForKey:kHeader];
}
// 数据源方法,,组的最后显示什么标题
//- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
//{
//    return [_array[section] objectForKey:kFooter];
//}

@end

方式2,用类(model)取代数组中的字典

TwelveBeauties.h

//
//  TwelveBeauties.h
//  10_tableView
//
//  Created by beyond on 14-7-26.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import <Foundation/Foundation.h>
// 相应 viewController.m中的成员数组中的一个成员  --> 字典
@interface TwelveBeauties : NSObject
// UI控件连线时用weak,字符串用copy,其它对象用strong
@property (nonatomic,copy) NSString *header;
@property (nonatomic,copy) NSString *footer;
@property (nonatomic,strong) NSArray *girls;
// 提供一个类方法,一个以类名开头的构造方法(返回id亦可)
+ (TwelveBeauties *)twelveBeautiesWithHeader:(NSString *)header footer:(NSString *)footer girls:(NSArray *)girls;
@end

TwelveBeauties.m

//
//  TwelveBeauties.m
//  10_tableView
//
//  Created by beyond on 14-7-26.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import "TwelveBeauties.h"

@implementation TwelveBeauties
// 提供一个类方法,一个以类名开头的构造方法(返回id亦可)
+ (TwelveBeauties *)twelveBeautiesWithHeader:(NSString *)header footer:(NSString *)footer girls:(NSArray *)girls
{
    TwelveBeauties *twelveBeauties = [[TwelveBeauties alloc]init];
    twelveBeauties.header = header;
    twelveBeauties.footer = footer;
    twelveBeauties.girls = girls;
    return twelveBeauties;
}@end

BeyondViewController.m

//
//  BeyondViewController.m
//  10_tableView
//
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import "BeyondViewController.h"
#import "TwelveBeauties.h"

@interface BeyondViewController ()<UITableViewDataSource>
{
    // 假数据
    NSArray *_array;
}
@end

@implementation BeyondViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
// 假数据 方式1 用字典
/*
     _array = @[ @{kHeader: @"十二钗正冊",
     kGirlsArr:@[@"林黛玉",@"薛宝钗",@"贾元春",@"贾探春",@"史湘云",@"妙玉",@"贾迎春",@"贾惜春",@"王熙凤",@"贾巧姐",@"李纨",@"秦可卿"],
     kFooter:@"红楼梦"
     },
     @{kHeader: @"十二钗副冊",
     kGirlsArr:@[@"香菱",@"薛宝琴",@"尤二姐",@"尤三姐",@"邢岫烟",@"李纹",@"李绮",@"夏金桂",@"秋桐",@"小红",@"龄官",@"娇杏"],
     kFooter:@"红楼梦"
     },
     @{kHeader: @"十二钗又副冊",
     kGirlsArr:@[@"晴雯",@"袭人",@"平儿",@"鸳鸯",@"紫鹃",@"莺儿",@"玉钏",@"金钏",@"彩云",@"司棋",@"芳官",@"麝月"],
     kFooter:@"红楼梦"
     }
     ];
*/
    // 假数据 方式2 用类封装后
    _array = @[
               [TwelveBeauties twelveBeautiesWithHeader:@"十二钗正冊" footer:@"红楼梦" girls:@[">@"林黛玉",@"薛宝钗",@"贾元春",@"贾探春",@"史湘云",@"妙玉",@"贾迎春",@"贾惜春",@"王熙凤",@"贾巧姐",@"李纨",@"秦可卿"]],
               [TwelveBeauties twelveBeautiesWithHeader:@"十二钗副冊" footer:@"红楼梦" girls:@[@"香菱",@"薛宝琴",@"尤二姐",@"尤三姐",@"邢岫烟",@"李纹",@"李绮",@"夏金桂",@"秋桐",@"小红",@"龄官",@"娇杏"]],
               [TwelveBeauties twelveBeautiesWithHeader:@"十二钗又副冊" footer:@"红楼梦" girls:@[@"晴雯",@"袭人",@"平儿",@"鸳鸯",@"紫鹃",@"莺儿",@"玉钏",@"金钏",@"彩云",@"司棋",@"芳官",@"麝月"]]
               ];
    // 样式仅仅有两种 Grouped Plain
	UITableView *tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
    // 数据源
    tableView.dataSource = self;
    // 加入到self.view
    [self.view addSubview:tableView];
}
// 数据源方法,特例,重要~ 一共同拥有多少个分组
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return _array.count;
}
// 数据源方法,每一组,有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // 返回数组中相应的字典的长度
    // return [[_array[section] objectForKey:kGirlsArr] count];

    // 用数据模型封装后
    TwelveBeauties *twelveBeauties = _array[section];
    return twelveBeauties.girls.count;
}
// 数据源方法,每一组的每一行应该显示怎么的界面(含封装的数据),重点!!!必须实现否则,Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellID = @"Beyond";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if (cell == nil) {
        // 假设池中没取到,则又一次生成一个cell
        /*
            cell的4种样式:
            1,default   左图右文字
            2,subtitle  左图  上文字大    下文字小
            3,value 1   左图  左文字大    右文字小
            3,value 2   恶心  左文字小    右文字大
         */
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
    }
    // 设置cell中独一无二的内容,字典封装假数据
    //cell.textLabel.text = [_array[indexPath.section] objectForKey:kGirlsArr][indexPath.row];

    // 用数据模型封装后
    TwelveBeauties *twelveBeauties = _array[indexPath.section];
    cell.textLabel.text = [twelveBeauties.girls objectAtIndex:indexPath.row]  ;
    // 返回cell
    return cell;
}
// 数据源方法,组的开头显示什么标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    // 字典封装假数据
    // return [_array[section] objectForKey:kHeader];

    // 用数据模型封装后
    TwelveBeauties *twelveBeauties = _array[section];
    return twelveBeauties.header;
}
// 数据源方法,组的索引的标题(通讯录最右边的竖条)
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    // 用KVC \ KVO 能够一句代码实现
    return @[@"正冊",@"副冊",@"又副冊"]    ;
//    NSMutableArray *array = [NSMutableArray array];
//    for (TwelveBeauties *tb in _array) {
//        [array addObject:tb.header];
//    }
//    NSLog(@"%@",array);
//    return array;

}

@end

iOS_10_tableView的简单使用_红楼十二钗,布布扣,bubuko.com

时间: 2024-12-21 11:07:55

iOS_10_tableView的简单使用_红楼十二钗的相关文章

3_Jsp标签_简单标签_防盗链和转义标签的实现

一概念 1防盗链 在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件,通过referer,网站可以检测目标网页访问的来源网页.有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面. 2页面中的转义字符 在HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当作文本中的符号来使用.为了在HTML文档中使用这些符号,就

iOS_12_tableViewCell的删除更新_红楼梦

最终效果图: Girl.h // // Girl.h // 12_tableView的增删改 // // Created by beyond on 14-7-27. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import <Foundation/Foundation.h> @interface Girl : NSObject // UI控件用weak,字符串用copy,其他对象用strong // 头像图片名 @pr

iOS_13_tableView的编辑模式_红楼梦

最终效果图: Girl.h // // Girl.h // 12_tableView的增删改 // // Created by beyond on 14-7-27. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import <Foundation/Foundation.h> @interface Girl : NSObject // UI控件用weak,字符串用copy,其他对象用strong // 头像图片名 @pr

Java使用poi对Execl简单操作_总结

poi是Apache组织给开发者提供一套操作office(Execl,Word,PowerPoint)等Java API,开发者通过Poi API可以快速的操作office办公软件,以上3篇博文只是一个简单入门(望已经熟练操作Poi API的开发者莫笑)⊙﹏⊙∥,更多API和操作方法还是建议大家看官方文档,在实际开发中如果业务数据不是很复杂,用Execl足以,如果很复杂的业务数据和样式建议可以考虑使用别的报表框架,在对Execl的读和写的操作我们往往都是以对象的操作,所以大家可以考虑封装下,还有

zabbix登山路——简单监控_各项参数解析

一.简单检查,通常用来检查远程未安装代理或者客户端的服务 使用simple checks,被监控客户端无需安装zabbix agent客户端,zabbix server直接使用simple checks来收据数据,一基本上都是用来检测远程服务器某端口是否在监听. 如下例子为simple checks: net.tcp.service[ftp,,155] net.tcp.service[http] net.tcp.service.perf[http,,8080] 使用基本检测去监控vmware服务

增加AC-DC电源掉电保持时间的简单方法_金升阳模块电源

摘要:在一些特殊的应用场合,常规AC-DC开关电源的掉电保持时间无法满足要求,而超长掉电保持时间的开关电源在市场上十分少见.为满足这些特殊应用场合的需求,本文从理论上分析了决定掉电保持时间的因素,并提出了一种简单的通过外围电路来增加掉电保持时间的方法. 关键词:AC-DC:模块电源:掉电保持时间 0 引言 ACDC开关电源有一项重要的技术参数——掉电保持时间,指从AC掉电到输出电压下降到精度范围(通常是-2%)之外的时间差⊿t,如图1所示.通俗地讲,就是开关电源在没有输入后,输出还能撑多久. 很

24点游戏_简单界面_可直接运行

1 #include<Windows.h> 2 #include<iostream> 3 #include<cstdio> 4 #include<cstdlib> 5 #include<cstring> 6 #include<string> 7 #include<vector> 8 #include<ctime> 9 #include<cmath> 10 using namespace std; 1

解决问题1:可以从桌面显示到FORM MFC/HALCON混合编程系列一_打开图像_简单处理_

没法爱上新浪  转载:http://blog.sina.com.cn/s/blog_812e326f010110og.html 从图1到图2 图1(在桌面显示了) open_window(0,0, Width/2, Height/2,0,"visible","",&WindowHandle); 更改为: Hlong MainWndID =(Hlong) m_hWnd; open_window(0,0, Width/2, Height/2,MainWndID,

JS_简单倒计时_实例_格式:0 天 20 小时 48 分 54 秒

<!doctype html><html><head> <meta charset="UTF-8"> <title>time</title> <script  src="jquery.js" type="text/javascript"></script></head><body><h1>  <span id=