1. 點擊「cell」推出對應的界面緩存
1.1 新建group,名爲:Settingide
路徑:MYLottery(個人彩票)->Controller字體
1.2 新建Cocoa Touch Class,名爲:HMRedeemControlleratom
路徑:MYLottery(個人彩票)->Controller->Setting->spa
Cocoa Touch Class:(Class:HMRedeemController;Subclass of:UIViewController;Language:Objective-C)3d
1.3 在「HMRedeemController.m」的「viewDidLoad」方法中設置「View Controller」的背景爲紫色,代碼以下:code
- (void)viewDidLoad { self.view.backgroundColor = [UIColor purpleColor]; }
1.4 在「HMSettingController.m」建立點擊「cell」調用方法,代碼以下:orm
//點擊 cell 調用 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //獲取組 NSDictionary *group = self.groups[indexPath.section]; //獲取組全部的 cell NSArray *items = group[@"items"]; //獲取 cell 的信息 NSDictionary *item = items[indexPath.row]; if (item[@"targetVC"] && [item[@"targetVC"] length] > 0 ]) { //獲取字符串類型的目標 NSString *targetVC = item[@"targetVC"]; //轉換爲 Class 的類型 Class Clz = NSClassFromString(targetVC); //Class 的類型的對象 UIViewController *vc = [[Clz alloc] init]; if ([vc isKindOfClass:[HMSettingController class]]) { //若是是 setting 類型,須要傳入一個 plistName HMSettingController *setting = (HMSettingController *)vc; setting.plishName = item[@"plistName"]; } //設置 title vc.navigationItem.title = item[@"title"]; //跳轉 [self.navigationControler pushViewController:vc animated:YES]; } }
2. 點擊「推送和提醒」推出對應的界面對象
2.1 修改「plist」獲取方法blog
2.1.1 在「HMSettingController.h」申明「plistName」屬性,
代碼以下:@property (nonatomic, copy) NSString *plistName;
2.1.2 在「HMSettingController.m」修改「plist」獲取方法
原碼:NSString *path = [[NSBundle mainBundle] pathForResource:@「Setting」 ofType:@"plist"];
修改:NSString *path = [[NSBundle mainBundle] pathForResource:self.plistName ofType:@"plist"];
2.1.3 在「HMMyLotteryController.m」的「settingClick」方法添加「plist」獲取屬性
代碼以下:setting.plistName = @"Setting";
2.2 重寫「init」方法
2.2.1 在「HMSettingController.m」新建重寫「init」方法
- (instancetype)init { return [super initWithStyle:UITableViewStyleGrouped]; } - (instancetype)initWithStyle:(UITableViewStyle)style { return [super initWithStyle:UITableViewStyleGrouped]; }
2.1.2 在「HMMyLotteryController.m」修改「Table View」的「init」方法
原碼:HMSettingController *setting = [[HMSettingController alloc] initWithStyle:UITableViewStyleGrouped];
修改:HMSettingController *setting = [[HMSettingController alloc] init];
2.3 新建Property List,名爲:SettingPush
路徑:MYLottery(個人彩票)->Other
2.4 在「HMSettingController.m」修改加載「cell」圖片屬性
原碼:cell.imageView.image = [UIImage imageNamed:item[@"icon"]];
修改:if (item[@"icon"] && [item[@"icon"] length] > 0) {
//設置 cell 圖片
cell.imageView.image = [UIImage imageNamed:item[@"icon"]];
}
2.5 將「HMSettingController.m」類中的「viewDidLoad」方法中的「self.navigationControler.title = @"設置";」
剪切到「HMMyLotteryController.m」類中的「settingClick」方法中
3. 「推送和提醒」的「開獎推送」界面
3.1 新建Property List,名爲:SettingPush01
路徑:MYLottery(個人彩票)->Other
3.2 在「HMSettingController.m」建立 cell 返回類型,代碼以下:
//根據傳入的 cell 類型,返回須要建立的 cell 的類型 - (UITableViewCellStyle)loadCellStyleWithItem:(NSDictionary *)item { if ([item[@"cellType"] isEqualToString:@"UITableViewCellStyleSubtitle"]) { return UITableViewCellStyleSubtitle; } else if ([item[@"cellType"] isEqualToString:@"UITableViewCellStyleValue1"]) { return UITableViewCellStyleValue1; } else if ([item[@"cellType"] isEqualToString:@"UITableViewCellStyleValue2"]) { return UITableViewCellStyleValue2; } else { return UITableViewCellStyleDefault; } }
3.3 在「HMSettingController.m」類中的「UITableViewCell」方法中修改 cell 建立類型方式
原碼:cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellid];
修改:cell = [[UITableViewCell alloc] initWithStyle:[self loadCellStyleWithItem:item] reuseIdentifier:cellid];
3.4 在「HMSettingController.m」類中的「UITableViewCell」添加 cell 的子標題
代碼以下:cell.detailTextLabel.text = item[@"subTitle"];
4. 封裝 cell
4.1 新建Cocoa Touch Class,名爲:HMSettingCell
路徑:MYLottery(個人彩票)->View->
Cocoa Touch Class:(Class:HMSettingCell;Subclass of:UITableViewCell;Language:Objective-C)
4.2 在「HMSettingCell.h」申明"item"字典和「settingCellWithTableView」類方法,
代碼以下:
@property (nonatomic, strong) NSDictionary *item;
+ (instancetype)settingCellWithTableView:(UITableView *)tableView andItem:(NSDictionary *)item;
4.3 在「HMSettingCell.m」實現「settingCellWithTableView」類方法,
將「HMMyLotteryController.m」相關代碼剪切到該文件修改,代碼以下:
@implementation HMSettingCell + (instancetype)settingCellWithTableView:(UITableView *)tableView andItem:(NSDictionary *)item { //static NSString *cellid = @"setting_cell"; //cell 重用 NSString *cellid = @""; if (item[@"cellType"] && [item[@"cellType"] length] > 0) { cellid = item[@"cellType"]; } else { cellid = @"setting_cell"; } //緩存池找 HMSettingCell *cell = [tableView dequeueReusableCellWithIdentifier:cellid]; if (!cell) { cell = [[HMSettingCell alloc] initWithStyle:[self loadCellStyleWithItem] reuseIdentifier:cellid]; } cell.item = item; return cell; } - (void)setItem:(NSDictionary *)item { _item = item; //把數據放到 cell //賦值 if (item[@"icon"] && [item[@"icon"] length] > 0) { self.imageView.image = [UIImage imageNamed:item[@"icon"]]; //設置圖片 } self.textLabel.text = item[@"title"]; //設置標題 self.detailTextLabel.text = item[@"subTitle"]; //設置子標題 //根據字符建立生成對象 NSString *accessoryType = item[@"accessoryType"]; //獲取 UISwith 的字符串:@"UISwith" Class Clz = NSClassFromString(accessoryType); //獲取 UISwith 的類型:UISwith UIView *obj = [[Clz alloc] init]; //獲取 UISwith 類型的對象 //判斷 obj 真實的類型 if ([obj isKindOfClass:[UIImage class]]) { //設置 frame 圖片 UIImageView *imageView = (UIImageView *)obj; imageView.image = [UIImage imageNamed:item[@"accessoryContent"]]; [imageView sizeToFit]; } self.accessoryType = obj; //設置 accessoryView } //根據傳入的 cell 類型,返回須要建立的 cell 的類型 - (UITableViewCellStyle)loadCellStyleWithItem:(NSDictionary *)item { if ([item[@"cellType"] isEqualToString:@"UITableViewCellStyleSubtitle"]) { return UITableViewCellStyleSubtitle; } else if ([item[@"cellType"] isEqualToString:@"UITableViewCellStyleValue1"]) { return UITableViewCellStyleValue1; } else if ([item[@"cellType"] isEqualToString:@"UITableViewCellStyleValue2"]) { return UITableViewCellStyleValue2; } else { return UITableViewCellStyleDefault; } } @end
5. 「推送和提醒」的「比分直播推送」界面
5.1 新建Cocoa Touch Class,名爲:HMLiveController
路徑:MYLottery(個人彩票)->Controller->Setting->
Cocoa Touch Class:(Class:HMLiveController;Subclass of:UISettingController;Language:Objective-C)
5.2 配置「SettingPush.plish」
Item 1->「plistName」:SettingPush02
Item 1->「targetVC」:「HMLiveController」
5.3 新建Property List,名爲:SettingPush02
路徑:MYLottery(個人彩票)->Other
5.4 設置「起始時間」和「結束時間」的時間字體爲紅色
在「HMSettingCell.m」類的「setItem」方法中添加子標題顏色方法,代碼以下:
if ([item[@"isRed"] boolValue] && item[@"isRed"]) { self.detaiTextLabel.textColor = [UIColor redColor]; //設置子標題顏色 }
5.5 點擊「起始時間」和「結束時間」 cell 彈出文本框
5.5.1 在「HMLiveController.m」中申明「datePlicker」的全局變量
代碼以下:@property (nonatomic, weak) UIDatePicker *datePicker;
5.5.2 在「HMLiveController.m」中建立 cell 點擊事件,代碼以下:
#import "UIView_Frame.h" - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //第一組不點 if (indexPath.section == 0) { return; } //建立一個看不見的文本框 UITextField *text = [[UITextField alloc] init]; //建立 cell UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; //添加到 cell 上 [cell.contentView addSubview:text]; //建立 datePicker UIDatePicker.locale = [[UIDatePicker alloc] init]; self.datePicker = datePicker; //中文 datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; //時間模式 datePicker.datePickerMode = UIDatePickerModeTime; //設置文本框的 inputView text.inputView = datePicker; //建立 toolbar UIToolbar * bar = [[UIToolbar alloc] init]; //設置 toolbar 的高度 bar.h = 44; //建立三個 item //item - 取消 UIBarButtonItem *cancelItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStylePlain target:self action:@selector(cancelClick)]; //item - 彈簧 UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleItemFlexibleSpace target:nil action:nil]; //item - 完成 UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithTitle:@"完成" style:UIBarButtonItemStyleDone target:self action:@selector(doneClick)]; //設置 toolbar 的 item bar.items = @[cancelItem, item, doneItem]; //設置文本框的 imputAccessoryView text.inpushAccessoryView = bar; //讓文本框成爲第一響應者 [text becomeFirstResponder]; }
5.5.3 在「HMLiveController.m」中建立 toolbar 取消按鈕的點擊事件,代碼以下:
//收鍵盤 - (void)cancelClick { [self.view endEditing:YES]; }
5.5.4 在「HMLiveController.m」中建立 toolbar 完成按鈕的點擊事件,代碼以下:
- (void)doneClick { //獲取 datePicker 的時間 NSDate *date = self.datePicker.date; //建立格式化時間的對象 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; //設置格式化時間對象的格式 formatter.dateFormat = @"HH:mm"; //把 date 轉成 string NSString *time = [formatter stringFromFate:date]; //獲取 indexPath NSIndexPath *path = [self.tableView indexPathForSelectedRow]; //獲取 cell UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:path]; //修改時間 cell.detaiTextLabel.text = time; //收鍵盤 [self cancelClick]; }