SelectStoreViewController.m 8.58 KB
Newer Older
admin's avatar
admin committed
1 2 3 4 5 6 7 8 9 10
//
//  SelectStoreViewController.m
//  redstar
//
//  Created by admin on 15/12/13.
//  Copyright © 2015年 ZWF. All rights reserved.
//

#import "SelectStoreViewController.h"
#import <RATreeView.h>
admin's avatar
admin committed
11 12 13 14 15 16 17 18
#import "SelectAreaTableCell.h"
#define kSelectAreaTableCell @"selectAreaTableCell"

#import "SelectProvinceTableCell.h"
#define kSelectProvinceTableCell @"selectProvinceTableCell"

#import "SelectStoreTableCell.h"
#define kSelectStoreTableCell @"selectStoreTableCell"
admin's avatar
admin committed
19 20 21 22 23

#import "AreaModel.h"
#import "ProvinceModel.h"
#import "StoreModel.h"

admin's avatar
admin committed
24
#import "SelectStoreHeadView.h"
admin's avatar
admin committed
25
#import "CheckBoxButton.h"
admin's avatar
admin committed
26

admin's avatar
admin committed
27 28 29
@interface SelectStoreViewController () <RATreeViewDelegate, RATreeViewDataSource>
@property (nonatomic, strong) RATreeView *treeView;
@property (nonatomic, strong) NSMutableArray *allAreaData;
admin's avatar
admin committed
30 31
@property (nonatomic, strong) SelectStoreHeadView *headerView;

admin's avatar
admin committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
@end

@implementation SelectStoreViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    UILabel *customLab = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 30)];
    [customLab setTextColor:[UIColor whiteColor]];
    [customLab setText:@"选择商场"];
    customLab.font = [UIFont boldSystemFontOfSize:19];
    self.navigationItem.titleView = customLab;
    
   
    
    UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    backBtn.frame = CGRectMake(0, 0, 30, 44);
    
    [backBtn setImage:[UIImage imageNamed:@"back_btn"] forState:UIControlStateNormal];
    [backBtn addTarget:self action:@selector(doBack:) forControlEvents:UIControlEventTouchUpInside];
    
    UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
    self.navigationItem.leftBarButtonItem = backItem;
    
    [self loadData];
    
    
    self.treeView.delegate = self;
    self.treeView.dataSource = self;
    [self.treeView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])];
    self.treeView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.treeView reloadData];
}

- (void)doBack:(id)sender
{
    [self.navigationController popViewControllerAnimated:YES];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)loadData
{
    StoreModel *notebook1 = [StoreModel dataObjectWithName:@"南京中央路店"];
    StoreModel *notebook2 = [StoreModel dataObjectWithName:@"镇江新区店"];
    StoreModel *notebook3 = [StoreModel dataObjectWithName:@"南京卡子门店"];
    
    ProvinceModel *phone1 = [ProvinceModel dataObjectWithName:@"江苏" children:[NSArray arrayWithObjects:notebook1, notebook2, notebook3,nil]];
    ProvinceModel *phone2 = [ProvinceModel dataObjectWithName:@"苏北" children:nil];
    ProvinceModel *phone3 = [ProvinceModel dataObjectWithName:@"皖南" children:nil];
    ProvinceModel *phone4 = [ProvinceModel dataObjectWithName:@"皖北" children:nil];
    
    AreaModel *huadong = [AreaModel dataObjectWithName:@"华东大区"
                                                  children:[NSArray arrayWithObjects:phone1, phone2, phone3, phone4, nil]];
    
    
    
    ProvinceModel *computer1 = [ProvinceModel dataObjectWithName:@"黑龙江"
                                                      children:nil];
    ProvinceModel *computer2 = [ProvinceModel dataObjectWithName:@"吉林" children:nil];
    ProvinceModel *computer3 = [ProvinceModel dataObjectWithName:@"哈尔滨" children:nil];
    
    AreaModel *huabei = [AreaModel dataObjectWithName:@"华北东北大区"
                                                     children:[NSArray arrayWithObjects:computer1, computer2, computer3, nil]];
    AreaModel *jinghu = [AreaModel dataObjectWithName:@"京沪西南"
                                               children:[NSArray arrayWithObjects:computer1, computer2, computer3, nil]];
    
admin's avatar
admin committed
105 106

    self.allAreaData = [NSMutableArray arrayWithObjects:huadong ,huabei, jinghu,nil];
admin's avatar
admin committed
107 108 109
    
}

admin's avatar
admin committed
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
- (void)areaClick:(CheckBoxButton *)sender
{
    sender.selected = !sender.selected;
    SelectAreaTableCell *cell = (SelectAreaTableCell *)sender.superview.superview;
    NSArray *provinceArray = cell.areaModel.provinceArray;
    if (sender.selected) {
        
        for (ProvinceModel *proVin in provinceArray) {
            proVin.isChoose = YES;
        }
        [sender setTitleColor:kLightBlack forState:UIControlStateNormal];
    } else {
        for (ProvinceModel *proVin in provinceArray) {
            proVin.isChoose = NO;
        }
        [sender setTitleColor:kSelectStoreColor forState:UIControlStateNormal];

    }
    [_treeView reloadRows];
}

admin's avatar
admin committed
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

#pragma mark - RAtreeView Delegate/DataSource
- (NSInteger)treeView:(RATreeView *)treeView numberOfChildrenOfItem:(id)item
{
    NSInteger level = [treeView levelForCellForItem:item];
    if (level == -1) {
        return [self.allAreaData count];
    } else if (level == 0) {
        AreaModel *data = item;
        return data.provinceArray.count;
    } else if (level == 1) {
        ProvinceModel *data = item;
        return data.storeArray.count;
    } else {
        return 0;
    }
}


- (id)treeView:(RATreeView *)treeView child:(NSInteger)index ofItem:(id)item
{
    NSInteger level = [treeView levelForCellForItem:item];
    if (level == -1) {
        return [self.allAreaData objectAtIndex:index];
    } else if (level == 0) {
        AreaModel *data = item;
        return data.provinceArray[index];
    } else if (level == 1) {
        ProvinceModel *data = item;
        return data.storeArray[index];
    } else {
        return nil;
    }
}

- (UITableViewCell *)treeView:(RATreeView *)treeView cellForItem:(id)item
{
    NSInteger level = [self.treeView levelForCellForItem:item];
    if (level == 0) {
        AreaModel *data = item;
admin's avatar
admin committed
171
        SelectAreaTableCell *cell = [self.treeView dequeueReusableCellWithIdentifier:kSelectAreaTableCell];
admin's avatar
admin committed
172
        cell.areaModel = data;
admin's avatar
admin committed
173
        [cell.checkBoxButton setTitle:data.name forState:UIControlStateNormal];
admin's avatar
admin committed
174
        [cell.checkBoxButton addTarget:self action:@selector(areaClick:) forControlEvents:UIControlEventTouchUpInside];
admin's avatar
admin committed
175
        cell.iconImageView.image = [UIImage imageNamed:@"arrow_down"];
admin's avatar
admin committed
176 177 178 179
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        return cell;
    } else if (level == 1) {
        ProvinceModel *data = item;
admin's avatar
admin committed
180
        SelectProvinceTableCell *cell = [self.treeView dequeueReusableCellWithIdentifier:kSelectProvinceTableCell];
admin's avatar
admin committed
181 182 183 184 185 186
        cell.provinceModel = data;
        if (data.isChoose) {
            cell.checkBoxButton.selected = YES;
        } else {
            cell.checkBoxButton.selected = NO;
        }
admin's avatar
admin committed
187
        [cell.checkBoxButton setTitle:data.name forState:UIControlStateNormal];
admin's avatar
admin committed
188

admin's avatar
admin committed
189
        cell.iconImageView.image = [UIImage imageNamed:@"grey-trilateral_down"];
admin's avatar
admin committed
190 191 192 193
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        return cell;
    } else {
        StoreModel *data = item;
admin's avatar
admin committed
194
        
admin's avatar
admin committed
195
        SelectStoreTableCell *cell = [self.treeView dequeueReusableCellWithIdentifier:kSelectStoreTableCell];
admin's avatar
admin committed
196
        cell.storeModel = data;
admin's avatar
admin committed
197
        [cell.checkBoxButton setTitle:data.name forState:UIControlStateNormal];
admin's avatar
admin committed
198 199 200 201 202
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        return cell;
    }
}

admin's avatar
admin committed
203

admin's avatar
admin committed
204 205 206 207 208 209 210 211 212 213 214 215 216

- (BOOL)treeView:(RATreeView *)treeView canEditRowForItem:(id)item
{
    return NO;
}


#pragma mark - Lazy loading
- (RATreeView *)treeView
{
    if (!_treeView) {
        _treeView = [[RATreeView alloc] initWithFrame:self.view.bounds];
        _treeView.treeFooterView = [UIView new];
admin's avatar
admin committed
217 218
        _treeView.rowHeight = UITableViewAutomaticDimension;
        _treeView.estimatedRowHeight = 150.0;
admin's avatar
admin committed
219 220 221 222
        _treeView.treeHeaderView = self.headerView;
        [_treeView registerClass:[SelectAreaTableCell class] forCellReuseIdentifier:kSelectAreaTableCell];
        [_treeView registerClass:[SelectProvinceTableCell class] forCellReuseIdentifier:kSelectProvinceTableCell];
        [_treeView registerClass:[SelectStoreTableCell class] forCellReuseIdentifier:kSelectStoreTableCell];
admin's avatar
admin committed
223 224 225 226 227
        [self.view addSubview:_treeView];
    }
    return _treeView;
}

admin's avatar
admin committed
228 229 230 231 232 233 234 235
- (SelectStoreHeadView *)headerView
{
    if (!_headerView) {
        _headerView = [[SelectStoreHeadView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 50)];
    }
    return _headerView;
}

admin's avatar
admin committed
236 237 238 239 240 241 242 243 244 245 246
/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end