網易彩票-個人彩票-設置-cell跳轉界面

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];
}
View Code

  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];
    }    
}
View Code

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];
}
View Code

    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;
    }
}
View Code

  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;
View Code

  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
View Code

 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];    //設置子標題顏色
}
View Code

  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];
}
View Code

    5.5.3 在「HMLiveController.m」中建立 toolbar 取消按鈕的點擊事件,代碼以下:

//收鍵盤
- (void)cancelClick
{
    [self.view endEditing:YES];
}
View Code

    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];
}
View Code
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息