第4课、UITableView专题(二)

对TableView进一步理解

  

  1.  创建项目。-- 省市级联小例子。

  2.  添加.plist文件。可以理解为数据字典。键值对(Key - Value)

    2.1 cities.plist  - 城市

    2.2 provinces.plist -  省份

  3.  常用方法:

    3.1  QQ,微信,通讯录常见的,列表右侧有:ABCDE... 字样,就是如下方法。

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

    3.2 点击某一行执行方法(要遵守UITableViewDelegate协议)  

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

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>

@end
#import "ViewController.h"

@interface ViewController ()

//城市字典
@property (strong, nonatomic) NSDictionary * arrCities;

//省数组
@property (strong, nonatomic) NSArray * arrProvinces;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    //初始化
    NSBundle * bundle = [NSBundle mainBundle];
    self.arrCities = [NSDictionary dictionaryWithContentsOfFile:[bundle pathForResource:@"cities" ofType:@"plist"]];
    self.arrProvinces = [NSArray arrayWithContentsOfFile:[bundle pathForResource:@"provinces" ofType:@"plist"]];
}

#pragma mark - tableView DataSource

#pragma mark 分组数量
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.arrProvinces.count;
}

#pragma mark 每组行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSString * provinceName = self.arrProvinces[section];
    NSArray * arrCityName =[self.arrCities objectForKey:provinceName];

    return arrCityName.count;
}

#pragma mark 每行内容

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];

    NSString * provinceName = self.arrProvinces[indexPath.section];
    NSArray * arrCityNames = [self.arrCities objectForKey:provinceName];

    cell.textLabel.text = arrCityNames[indexPath.row];

    return cell;
}

#pragma mark 头部
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return self.arrProvinces[section];
}

#pragma mark 分组信息
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return self.arrProvinces;
}

#pragma mark - tableView Delegate 

#pragma mark 点击一行
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString * provinceName = self.arrProvinces[indexPath.section];
    NSArray * arrCityNames = [self.arrCities objectForKey:provinceName];
    NSLog(@"%@", arrCityNames[indexPath.row]);
}

@end

介绍一个调试的方法:

  用处:

    1.  数组, log时,出现UTF-8编码。

    2.  对象,log时,出现指针地址等等。

  总结:

    1. 创建一个分组。命名:Log,继承NSArray

    2. 就可以看到,新建出 名为:NSArrar+Log 文件。

    3. 重写父类的描述方法。代码如下:

    

#import "NSArray+log.h"

@implementation NSArray (log)

- (NSString *)descriptionWithLocale:(id)locale
{
    NSMutableString * strDescript = [NSMutableString string];

    [strDescript appendString:@"("];
    [strDescript appendFormat:@"(数量总数==%i)", self.count];
    for (id obj in self)
    {
        [strDescript appendFormat:@"\n\t\"%@\",", obj];  //格式化数组格式。
    }
    [strDescript appendString:@")"];
    return strDescript;
}

@end

      4. 外面的正常log数组就可以。

      NSLog(@"%@", self.arrProvinces);

     5. 截图如下:

    

    

  消化下。。。。 继续前进。。。。

时间: 2024-10-11 03:21:44

第4课、UITableView专题(二)的相关文章

C++--第14课 - 专题二经典问题解析

第14课 - 专题二经典问题解析 1. malloc与free和new与delete有什么区别? malloc和free是函数,new和delete是关键字. #include <cstdlib> #include <iostream> using namespace std; class Test { private: int i; public: Test() { cout<<"Test()"<<endl; i = 0; } Test

分析Linux磁盘管理与文件系统专题二

1.关于设备文件 A 我们知道常见的设备文件有:字符设备文件(character),块设备文件(block). B 块设备,简写b,随机访问,比如硬盘. C 字符设备,简写c,线性访问,比如键盘,鼠标,显示器. D 我们的设备文件常常在/dev目录下,并且没有大小.因为设备文件只是作为设备访问   的入口. E 设备文件,一般用major(主设备号),minor(次设备号)进行标示.主设备号标示设备类型,次设备号标示同一种类型设备下的不同设备. 2.创建设备文件实例 [[email protec

UI标签库专题二:JEECG智能开发平台Column(列) 子标签

 1.1. Column(列) 子标签 1.1.1. 示例 <t:dgCol title="年龄" field="age" query="true" extend="{data-options:{required:false,groupSeparator:\"','\"},class:{value:'easyui-numberbox'}}"></t:dgCol> 1.1.2. 参

Tomcat专题二: JDK安装以及tomcat基本环境安装和使用

tomcat专题二:jdk安装以及tomcat基本安装和使用 书接tomcat专题一,在这一节将介绍一下java运行环境的安装以及tomcat的基本安装和使用.可能有人会问安装tomcat跟java运行环境有什么关系?正像专题一介绍的那样,tomcat本身只是一个业务框架,一个WEB容器,其底层还是基于jvm虚拟机来运行java程序的字节码文件.可以认为tomcat负责接受上层的应用请求,然后将请求的java程序交与jvm虚拟机执行并返回结果,这之间形成了一个调用关系,这在下面的tomcat启动

开发指南专题二:JEECG微云高速开发平台JEECG框架初探

开发指南专题二:JEECG微云高速开发平台JEECG框架初探 2.JEECG框架初探 2.1演示系统 打开浏览器输入JEECG演示环境界址:http://demo.jeecg.org:8090/能够看到如图21所看到的的登录界面., 图21演示系统登录界面 点击[登陆]button,进入演示系统的主界面,如图22所看到的. 图22演示系统主界面 在JEECG演示系统中的功能模块包含系统管理.流程管理.业务申请.业务办理.经常使用功能演示等.当中,用户管理.流程设计器的界面截图如图23和图24所看

开发指南专题二:JEECG微云快速开发平台JEECG框架初探

开发指南专题二:JEECG微云快速开发平台JEECG框架初探 2.JEECG框架初探 2.1演示系统 打开浏览器输入JEECG演示环境地址:http://demo.jeecg.org:8090/可以看到如图21所示的登录界面., 图21演示系统登录界面 点击[登陆]按钮,进入演示系统的主界面,如图22所示. 图22演示系统主界面 在JEECG演示系统中的功能模块包括系统管理.流程管理.业务申请.业务办理.常用功能演示等.其中,用户管理.流程设计器的界面截图如图23和图24所示. 图2

「kuangbin带你飞」专题二十二 区间DP

layout: post title: 「kuangbin带你飞」专题二十二 区间DP author: "luowentaoaa" catalog: true tags: - kuangbin - 区间DP - 动态规划 传送门 B.LightOJ - 1422 Halloween Costumes 题意 按顺序参加舞会,参加一个舞会要穿一种衣服,可以在参加完一个舞会后套上另一个衣服再去参加舞会,也可以在参加一个舞会的时候把外面的衣服脱了,脱到合适的衣服,但是脱掉的衣服不能再穿,参加完

「kuangbin带你飞」专题二十 斜率DP

layout: post title: 「kuangbin带你飞」专题二十 斜率DP author: "luowentaoaa" catalog: true tags: mathjax: true - kuangbin - 动态规划 - 斜率DP 传送门 A.HDU - 3507 Print Article 题意 就是输出序列a[n],每连续输出的费用是连续输出的数字和的平方加上常数M 让我们求这个费用的最小值. 题解 概率DP的入门题,把我搞得要死要活的. 首先dp[i]表示输出前i

UI标签库专题二 JEECG智能开发平台Column 列 子标签

UI标签库专题二:JEECG智能开发平台Column(列) 子标签 1.1. Column(列) 子标签 1.1.1. 示例 <t:dgCol title="年龄" field="age" query="true" extend="{data-options:{required:false,groupSeparator:\"','\"},class:{value:'easyui-numberbox'}}&quo