AJ学IOS(47)之网易彩票帮助界面UIWebView的运用
AJ分享,必须精品
效果:
制作过程
首先是帮助按钮那个地方的点击。
这里是用点击跳转的用的是 NJSettingArrowItem,前面的设置的,从字典通过模型转过来的。
// 分享
NJSettingArrowItem *share = [[NJSettingArrowItem alloc ]initWithIcon:@"MoreShare" title:@"分享" destClass:[NJShareViewController class]];
帮助界面
帮助界面其实是一个tableView,然后字典转模型,运用模型helps来设置cell
代码:
@interface NJHelpViewController ()
/**
* 保存所有的json对象
*/
@property (nonatomic, strong) NSArray *helps;
@end
@implementation NJHelpViewController
#pragma mark - 懒加载
- (NSArray *)helps
{
if (_helps == nil) {
NSString *path = [[NSBundle mainBundle] pathForResource:@"help.json" ofType:nil];
NSData *data = [NSData dataWithContentsOfFile:path];
NSArray *dictArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:NULL];
NSMutableArray *models = [[NSMutableArray alloc] initWithCapacity:dictArray.count];
for (NSDictionary *dict in dictArray) {
NJHelp *help = [NJHelp helpWithDict:dict];
[models addObject:help];
}
_helps = models;
}
return _helps;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// 定义数组保存创建好的item模型
NSMutableArray *items = [NSMutableArray arrayWithCapacity:self.helps.count];
// 根据我们通过json创建的对象创建item
for (NJHelp *help in self.helps) {
NJSettingItem *item = [[NJSettingArrowItem alloc]initWithIcon:nil title:help.title destClass:nil];
[items addObject:item];
}
// 创建分组
NJSettingGroup *group = [[NJSettingGroup alloc] init];
// 将所有的item赋值给分组items
group.items = items;
[self.datas addObject:group];
}
// 条目点击事件
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// 1.创建目标控制器
NJHtmlViewController *htmlVc = [[NJHtmlViewController alloc] init];
// 1.2传递要显示的html的名称
// htmlVc.html = [self.helps[indexPath.row] html];
htmlVc.helpModel = self.helps[indexPath.row];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:htmlVc];
// 2.以模态的形式展示目标控制器
[self presentViewController:nav animated:YES completion:^{
}];
}
@end
进入时展示的内容
这里其实是根据上一步的点击事件
条目点击事件
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
来确定用哪一个html网页文件。
点击条目跳转 到固定问题
这里用到了javascript的一点小代码,当点击时候自己跳转
网页加载完毕之后调用这个代码其中self.helpModel.tagId是我们定义的模型中的id,也就是想要跳转到得标签的id。
//设置代理
webView.delegate = self;
#pragma mark - UIWebViewDelegate
// 网页加载完毕之后调用
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
// NSLog(@"webViewDidFinishLoad");
// 当网页加载完毕之后执行javascript代码,跳转到对应的位置
// 1.生成对应的javascript代码
NSString *jsStr = [NSString stringWithFormat:@"window.location.href = '#%@';", self.helpModel.tagId];
[webView stringByEvaluatingJavaScriptFromString:jsStr];
}
设置标题和关闭按钮
// -1 设置标题
self.title = self.helpModel.title;
// 0. 添加关闭按钮
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"关闭" style:UIBarButtonItemStylePlain target:self action:@selector(closeVc)];
UIWebView的使用
self.helpModel是我们自己的模型
而使用UIWebView主要就是这几部了
1.获得网页的全路径:
NSString *path = [[NSBundle mainBundle] pathForResource:(NSString *) ofType:(NSString *)]
2.根据全路径创建url:
NSString *path = [[NSBundle mainBundle] pathForResource:(NSString *) ofType:(NSString *)]
3.根据url创建request :
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:(NSURL *)];
4.加载本地的网页 :
[webView loadRequest:(NSURLRequest *)];
// 利用自定义的webview加载网页
UIWebView *webView = (UIWebView *)self.view;
// 1.获得网页的全路径
NSString *path = [[NSBundle mainBundle] pathForResource:self.helpModel.html ofType:nil];
// 2.根据全路径创建url
NSURL *url = [[NSURL alloc] initFileURLWithPath:path];
// 3.根据url创建request
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
// 4.加载本地的网页
[webView loadRequest:request];
AJ学IOS(47)之网易彩票帮助界面UIWebView的运用的更多相关文章
- AJ学IOS 之微博项目实战(2)微博主框架-自定义导航控制器NavigationController
AJ分享,必须精品 一:添加导航控制器 上一篇博客完成了对底部的TabBar的设置,这一章我们完成自定义导航控制器(NYNavigationController). 为啥要做自定义呢,因为为了更好地封 ...
- AJ学IOS(13)UI之UITableView学习(下)汽车名牌带右侧索引
AJ分享,必须精品 先看效果图 代码 ViewController #import "NYViewController.h" #import "NYCarGroup.h& ...
- AJ学IOS(44)之网易彩票自定义图片在右边的Button_弹出view_ios6,7简单适配
AJ分享,必须精品 效果: 注意图里面了吗,其实那个效果做起来真的很简单,在iOS中苹果给我们封装的很好,关键是那个按钮 系统的按钮的图片是在左边的,这里我们需要把他调整到右边,然后呢需要我们自己做一 ...
- AJ学IOS(46)之网易彩票幸运大转盘
AJ分享,必须精品 效果 实现过程: 基础UI搭建 这里主要是用了xib搭建,首先我们分析,有中间的开始按钮,背景图片,还有星座按钮,这里能用xib做的事开始按钮和背景图片. 如图: 星座按钮的搭建: ...
- AJ学IOS(43)之网易彩票底部自定义TabBar实现切换
AJ分享,必须精品 效果: 代码: NYTabBarController // // NYTabBarController.m // 彩票lottery // // Created by apple ...
- AJ学IOS(42)UI之核心动画CAAnimationGroup以及其他
AJ分享,必须精品 效果: 代码: 很简单,不多说,就是把一堆动画放一起,看代码. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent * ...
- AJ学IOS 之微博项目实战(1)微博主框架-子控制器的添加
AJ分享,必须精品 一:简单介绍 这是新浪微博的iOS端项目,来自于黑马的一个实战项目. 主要分成五大模块,本次全部运用纯代码实现,其中会用到很多前面学过得内容,如果有的地方有重复的知识点,说明这个知 ...
- AJ学IOS(56)网络基础以及如何搭建服务器
AJ分享,必须精品 一:为什么要学习网络编程 关于这个问题,为什么要学习网络编程,AJ的理解就是,这东西是时代发展的必要,没什么为什么,就是应该学,除非你就是想玩单机,但是就算是单机也会有购买金币之类 ...
- AJ学IOS(55)多线程网络之图片下载框架之SDWebImage
AJ分享,必须精品 效果: 代码: - (NSArray *)apps { if (!_apps) { NSArray *dictArray = [NSArray arrayWithContentsO ...
随机推荐
- mpy开发物联网系列:1.mpy与服务器数据库方案
ini配置文件与非关系型数据库 在使用micropython开发esp32过程中,经常涉及到一些数据的配置读取,而esp32本身micropython难以安装很多数据库客户端的库,只能基于本地文件使用 ...
- hdu2087kmp模板练习
题目网址:http://icpc.njust.edu.cn/Problem/Hdu/2087/ 代码: #include<bits/stdc++.h> using namespace st ...
- BIT-逆序数
2019-12-17 09:42:44 问题描述: 问题求解: 逆序数问题非常经典,使用树状数组可以高效的解决这个问题. public List<Integer> countSmaller ...
- OpenCV-Python 图像分割与Watershed算法 | 三十四
目标 在本章中, 我们将学习使用分水岭算法实现基于标记的图像分割 我们将看到:cv.watershed() 理论 任何灰度图像都可以看作是一个地形表面,其中高强度表示山峰,低强度表示山谷.你开始用不同 ...
- 有个原则就是实体类还是controller入参都应该是 包装类型
问题说明 我在使用JPA作为项目的ORM框架的时候,在分页查询中,不管咋样使用查询不出来数据,然后发现Hibernate构建的查询SQL中,在where子句中带上了createTime=0这个条件.这 ...
- 一次作业过程及其问题的记录:mysql建立数据库、建表、查询和插入等
前言 这次的作业需要我建立一个小的数据库. 这次作业我使用了mysql,进行了建库.建表.查询.插入等操作. 以下是对本次作业相关的mysql操作过程及过程中出现的问题的记录. 正文 作业中对数据库的 ...
- Polya 定理相关题目
参考知识链接 关于枚举旋转置换: 前两题都是枚举了 n 种旋转, 但这个可以优化到\(O(\sqrt{n})\) (这个其实是基本操作). 考虑到每个循环节的长度都是 n 的因数, 所以可以枚 ...
- springboot集成通用mapper详细配置
通常,我们利用mybatis写持久层方法.要么按照传统定义mapper方法,定义xml文件的方式,全部手写.要么需要通过mybatis-generator逆向工程插件生成大量的xxxExample文件 ...
- 1642: 【USACO】Payback(还债)
1642: [USACO]Payback(还债) 时间限制: 1 Sec 内存限制: 64 MB 提交: 190 解决: 95 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 &quo ...
- Vertica的这些事(二)——SQL-Server、Oracle、MySQL和Vertica数据库常用函数对比
SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 绝对值 S:select abs(-1) value O ...