iOS-汽车品牌app

资料:汽车图片 和plist

文件:两个模型

//
//  Car.h
//  汽车品牌
//
//  Created by YaguangZhu on 15/8/16.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Car : NSObject

@property(nonatomic,copy)NSString *name;

@property(nonatomic,copy)NSString *icon;

- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)carWithDict:(NSDictionary *)dict;
+ (NSArray *)carsWithArray:(NSArray *)array;

@end
//
//  Car.m
//  汽车品牌
//
//  Created by YaguangZhu on 15/8/16.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import "Car.h"

@implementation Car

- (instancetype)initWithDict:(NSDictionary *)dict
{
    self = [super init];
    if (self) {
        [self setValuesForKeysWithDictionary:dict];
    }
    return self;
}

+ (instancetype)carWithDict:(NSDictionary *)dict
{
    return [[self alloc] initWithDict:dict];
}

+ (NSArray *)carsWithArray:(NSArray *)array
{
    //NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"heros.plist" ofType:nil]];
    NSMutableArray *arrayM = [NSMutableArray array];
    for (NSDictionary *dict in array) {
        [arrayM addObject:[self carWithDict:dict]];
    }

    return arrayM;
}

@end
//
//  carGroup.m
//  汽车品牌
//
//  Created by YaguangZhu on 15/8/16.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import "carGroup.h"
#import "Car.h"
@implementation carGroup

- (instancetype)initWithDict:(NSDictionary *)dict
{
    self = [super init];
    if (self) {
//[self setValuesForKeysWithDictionary:dict];
        [self setValue:dict[@"title"] forKey:@"title"];
        self.cars = [Car carsWithArray:dict[@"cars"]];
    }
    return self;
}

+ (instancetype)carGroupWithDict:(NSDictionary *)dict
{
    return [[self alloc] initWithDict:dict];
}

+ (NSArray *)carGroups1
{
    NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"cars_total.plist" ofType:nil]];
    NSMutableArray *arrayM = [NSMutableArray array];
    for (NSDictionary *dict in array) {
        [arrayM addObject:[self carGroupWithDict:dict]];
    }

    return arrayM;
}

@end
//
//  carGroup.h
//  汽车品牌
//
//  Created by YaguangZhu on 15/8/16.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface carGroup : NSObject
@property(nonatomic,copy)NSString *title;
@property(nonatomic,strong)NSArray *cars;

- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)carGroupWithDict:(NSDictionary *)dict;
+ (NSArray *)carGroups1;

@end
//
//  ViewController.m
//  汽车品牌
//
//  Created by YaguangZhu on 15/8/16.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import "ViewController.h"
#import "carGroup.h"
#import "Car.h"
@interface ViewController ()<UITableViewDataSource>
@property(nonatomic,strong)NSArray *carGroups1;
@property(nonatomic,strong)UITableView *tableView;
@end

@implementation ViewController
- (UITableView *)tableView
{
    if (_tableView == nil) {
        _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
        _tableView.dataSource = self;

        [self.view addSubview:_tableView];
    }
    return _tableView;
}
- (NSArray *)carGroups1
{
    if (_carGroups1 == nil) {
        _carGroups1 = [carGroup carGroups1];
    }

    return _carGroups1;
}
- (void)viewDidLoad {
    [super viewDidLoad];
   // NSLog(@"%@",self.carGroups1);
    [self tableView];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
//数据源方法
//分组的总数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.carGroups1.count;
}

//每一组的总数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    carGroup *group = self.carGroups1[section];

    return group.cars.count;
}

//单元格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *ID = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    if (cell ==nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    }

    carGroup *group = self.carGroups1[indexPath.section];
    Car *car = group.cars[indexPath.row];

    cell.imageView.image = [UIImage imageNamed:car.icon];
    cell.textLabel.text = car.name;

    return cell;
}

//标题
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    carGroup *group = self.carGroups1[section];
    return group.title;
}

//右侧索引列表
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
   /* NSMutableArray *arrayM = [NSMutableArray array];
    for (carGroup *group in self.carGroups1) {
        [arrayM addObject:group.title];
    }
    return arrayM;*/

    //kvc 是cocoa 的大招

    return [self.carGroups1 valueForKeyPath:@"title"];
}

@end
时间: 2024-10-24 09:39:27

iOS-汽车品牌app的相关文章

iOS -- 汽车品牌(UITableView)

#import "MJViewController.h"#import "MJCarGroup.h"@interface MJViewController () <UITableViewDataSource>@property (weak, nonatomic) IBOutlet UITableView *tableView;@property (nonatomic, strong) NSArray *carGroups;@end@implementat

iOS基础控件之 汽车品牌展示 Model嵌套/KVC/TableView索引

A.需求 1.使用汽车品牌名称头字母为一个Model,汽车品牌为一个Model,头字母Model嵌套品牌Model 2.使用KVC进行Model封装赋值 3.展示头字母标题 4.展示索引(使用KVC代替遍历取出所有索引值) B.实现 1.Model嵌套 其实就是将另一个Model作为成员 .plist 文件结构 GroupCar中有存储Car的数组 1 @property(nonatomic, strong) NSArray *cars; 封装Model的时候需要进行相应处理 CarGroup.

[iOS基础控件 - 6.4] 汽车品牌展示 Model嵌套/KVC/TableView索引

A.需求 1.使用汽车品牌名称头字母为一个Model,汽车品牌为一个Model,头字母Model嵌套品牌Model 2.使用KVC进行Model封装赋值 3.展示头字母标题 4.展示索引(使用KVC代替遍历取出所有索引值) B.实现 1.Model嵌套 其实就是将另一个Model作为成员 .plist 文件结构 GroupCar中有存储Car的数组 1 @property(nonatomic, strong) NSArray *cars; 封装Model的时候需要进行相应处理 CarGroup.

开发汽车百科APP具体思路

随着私家车的不断普及,想要买车的用户越来越多.对于大多数用户来说,他们对于车辆的认识仅仅局限于几个名牌以及一些打过广告的汽车品牌.当他们需要买车时,再去百度一个个去了解不仅费时,且效率还非常低. 汽车百科app为用户提供最全面的车辆信息以及参考价格等等,让用户不用百度搜索也可轻松了解行情.对于一些只是想要汽车品牌的用户来说,也可下载该软件,去了解.汽车百科app开发让用户轻松了解与汽车有关的知识. 汽车百科app开发解决方案 1.品牌大全:涵盖国内外小型汽车品牌信息,各大汽车品牌的logo轻松了

ios俩个APP之间跳转、传值

两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个APP的url地址 3.需要跳转的时候 NSString *urlString = [NSString stringWithFormat:@"AppJumpSecond://%@",textField.text]; [[UIApplication sharedApplication] open

IOS研究之App转让流程须知详细介绍

 网络上有很多开发者提问怎么转让App并想知道具体的流程.实际上Appstore的App转让流程还是比较简单的,下面特酷吧根据自己的实际操作总结下iOS Appstore中App的转让流程,供大家参考.对网络开发不明白的朋友可以看IOS研究之网络编程Cocoa Streams使用详解 一,App的转让 (1)App转让的条件 至少有在Appstore上发售的版本,即应用状态为:"ready for sale".其他一些条件参考itunes connect中应用详情页面点击"

ios两个app之间跳转,传值的实现

两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个APP的url地址 3.需要跳转的时候 NSString *urlString = [NSString stringWithFormat:@"AppJumpSecond://%@",textField.text]; [[UIApplication sharedApplication] open

分分钟解决iOS开发中App启动广告的功能

前不久有朋友需要一个启动广告的功能,我说网上有挺多的,他说,看的不是很理想.想让我写一个,于是乎,抽空写了一个,代码通俗易懂,简单的封装了一下,各种事件用block回调的,有俩种样式的广告,一种是全屏广告,另一种是下面露logo的,类似网页新闻的启动广告.依赖SDWebImage主要用来下载网络的广告图片,一般项目里面网络图片都用的这个框架,所以在此不做过多的阐述.下面让我们来看看我封装的过程,对于新手来说,可以学习一下这种封装的思想. 1.首先建一个继承View的LBLaunchImageAd

[转载]IOS研究之App转让流程须知详细介绍

原文地址:http://www.tuicool.com/articles/uQRF3yM 网络上有很多开发者提问怎么转让App并想知道具体的流程.实际上Appstore的App转让流程还是比较简单的,下面特酷吧根据自己的实际操作总结下iOS Appstore中App的转让流程,供大家参考.对网络开发不明白的朋友可以看  IOS研究之网络编程Cocoa Streams使用详解 一,  App的转让 (1)App转让的条件 至少有在Appstore上发售的版本,即应用状态为:”ready for s