1. 点击“cell”推出对应的界面

  1.1 新建group,名为:Setting

    路径:MYLottery(我的彩票)->Controller

  1.2 新建Cocoa Touch Class,名为:HMRedeemController

    路径:MYLottery(我的彩票)->Controller->Setting->

       Cocoa Touch Class:(Class:HMRedeemController;Subclass of:UIViewController;Language:Objective-C)

  1.3 在“HMRedeemController.m”的“viewDidLoad”方法中设置“View Controller”的背景为紫色,代码如下:

- (void)viewDidLoad
{
self.view.backgroundColor = [UIColor purpleColor];
}

  1.4 在“HMSettingController.m”创建点击“cell”调用方法,代码如下:

//点击 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] > ]) { //获取字符串类型的目标
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”获取方法

    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] > ) {
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] > ) {
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 == ) {
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 = ; //创建三个 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];
}

网易彩票-我的彩票-设置-cell跳转界面的更多相关文章

  1. UITableView设置cell为不可选?

    本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术.本文将为读者讲解UITableView如何设置单 ...

  2. IOS中设置cell的背景view和选中时的背景view 、设置cell最右边的指示器(比如箭头\文本标签)

    一.Cell的设置 1.设置cell的背景view和选中时的背景view UIImageView *bg = [[UIImageView alloc] init]; bg.image = [UIIma ...

  3. 设置 cell点击 背景色

    //设置 cell点击 背景色 cell.selectionStyle = UITableViewCellSelectionStyleDefault; cell.selectedBackgroundV ...

  4. IIS 7.5 使用URL Rewrite模块简单设置网页跳转

    原文 IIS 7.5 使用URL Rewrite模块简单设置网页跳转 我们都知道Apache可以在配置文件里方便的设置针对网页或网站的rewrite,但是最近接手了一组IIS服务器,发现这货简单的没有 ...

  5. cdnbest设置301跳转

     cdnbest设置301跳转  格式:^http://kangleweb.com/(.*)$   https://www.kangleweb.com/$1  下面是站点里所有域名都跳转到https ...

  6. collectionView代理方法快速设置cell大小上下左右间隔

    #define JianGe 25 #define GeShu 4 #define ScreenWidth ([UIScreen mainScreen].bounds.size.width) #def ...

  7. 设置cell高度的两种方法(label高度的可变引起cell高度可变的情况)

    第一种:(iOS8以后可用) 在Xib或stroyboard中(代码也可以) 利用AutoLayout设置好label的约束(比如可以设置四个边都距离屏幕50等方式,必须四个边都要固定好). 在代码部 ...

  8. POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】

    实际开发过程中通常用到的就是从数据库导出EXCEL表格了,JXL可以这样做,其实POI也可以(关于JXL与POI的异同可访问我之前总结的文章),之前写过POI对七种文档(当然也包括EXCEL)的内容读 ...

  9. ios 设置cell的间距

    1.设置假的间距,我们在tableviewcell的contentView上添加一个view,比如让其距离上下左右的距离都是10:这个方法是最容易想到的: 2.用UIContentView来代替tab ...

随机推荐

  1. 第五周博客作业 <西北师范大学| 周安伟>

    第五周博客作业 一,助教博客链接https://home.cnblogs.com/u/zaw-315/ 二,本周工作查阅项目汇报,班级微信群.对同学们的中期项目汇报进行查看,解决上周留言问题,对及时出 ...

  2. appium 移动端自动化测试一

    最近公司决定使用appium为主体框架做一个移动端得自动化测试系统,我会陆续记录项目得进展. 1.首先是appium环境得搭建, 需要安装appium-server ,appium-desktop, ...

  3. PCIe link up bug 分析

    Xilinx两块开发版PCIe link up时间相差很大,Virtex-6开发版PCIe link up时间超过60ms,而Virtex-7 PCIe link up时间只有~25ms.   分析过 ...

  4. The declared package does not match the expected package Java

    今天使用vscode 编写java代码做测试时候,发现这个问题,大概总结一下. 目录结构 bao -> Point.java test.java package bao; public clas ...

  5. LeetCode解题录-1~50

    [leetcode]1. Two Sum两数之和 Two Pointers, HashMap Easy [leetcode]2. Add Two Numbers两数相加 Math, LinkedLis ...

  6. 使用python画一只佩奇

    打开界面: 打开python shell界面. 建立脚本: 单击"file"——"new file"来建立脚本. 编写代码: 具体的代码如下. import t ...

  7. nginx访问502 gateway,*1 connect() failed (111: Connection refused) while connecting to upstream

    安装好nginx,php环境后,配置虚拟主机,结果访问后就报502 gateway,查看日志文件后,显示错误如下: 2019/04/29 16:24:39 [error] 19433#19433: * ...

  8. 如何通过SSH工具(SecureCRT、XShell)连接Vmware虚拟机中的Linux(CentOS7)

    本文主要解决的问题:如何通过SSH工具连接到VMWare中改的Linux系统(CentOS7) 核心内容:Linux中需要安装openssh-server,并且启动了openssh-server服务. ...

  9. MAC使用超级终端

    其实很简单. 先用ls看看/dev/tty.*哪个是具体的串口,我这里使用的edison的板子,所以插到macos上后可以看到的设备节点为: 只需要使用screen 命令即可,具体的命令格式如下: s ...

  10. IntelliJ隐藏特定后缀文件

    preference-