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的运用的更多相关文章

  1. AJ学IOS 之微博项目实战(2)微博主框架-自定义导航控制器NavigationController

    AJ分享,必须精品 一:添加导航控制器 上一篇博客完成了对底部的TabBar的设置,这一章我们完成自定义导航控制器(NYNavigationController). 为啥要做自定义呢,因为为了更好地封 ...

  2. AJ学IOS(13)UI之UITableView学习(下)汽车名牌带右侧索引

    AJ分享,必须精品 先看效果图 代码 ViewController #import "NYViewController.h" #import "NYCarGroup.h& ...

  3. AJ学IOS(44)之网易彩票自定义图片在右边的Button_弹出view_ios6,7简单适配

    AJ分享,必须精品 效果: 注意图里面了吗,其实那个效果做起来真的很简单,在iOS中苹果给我们封装的很好,关键是那个按钮 系统的按钮的图片是在左边的,这里我们需要把他调整到右边,然后呢需要我们自己做一 ...

  4. AJ学IOS(46)之网易彩票幸运大转盘

    AJ分享,必须精品 效果 实现过程: 基础UI搭建 这里主要是用了xib搭建,首先我们分析,有中间的开始按钮,背景图片,还有星座按钮,这里能用xib做的事开始按钮和背景图片. 如图: 星座按钮的搭建: ...

  5. AJ学IOS(43)之网易彩票底部自定义TabBar实现切换

    AJ分享,必须精品 效果: 代码: NYTabBarController // // NYTabBarController.m // 彩票lottery // // Created by apple ...

  6. AJ学IOS(42)UI之核心动画CAAnimationGroup以及其他

    AJ分享,必须精品 效果: 代码: 很简单,不多说,就是把一堆动画放一起,看代码. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent * ...

  7. AJ学IOS 之微博项目实战(1)微博主框架-子控制器的添加

    AJ分享,必须精品 一:简单介绍 这是新浪微博的iOS端项目,来自于黑马的一个实战项目. 主要分成五大模块,本次全部运用纯代码实现,其中会用到很多前面学过得内容,如果有的地方有重复的知识点,说明这个知 ...

  8. AJ学IOS(56)网络基础以及如何搭建服务器

    AJ分享,必须精品 一:为什么要学习网络编程 关于这个问题,为什么要学习网络编程,AJ的理解就是,这东西是时代发展的必要,没什么为什么,就是应该学,除非你就是想玩单机,但是就算是单机也会有购买金币之类 ...

  9. AJ学IOS(55)多线程网络之图片下载框架之SDWebImage

    AJ分享,必须精品 效果: 代码: - (NSArray *)apps { if (!_apps) { NSArray *dictArray = [NSArray arrayWithContentsO ...

随机推荐

  1. 44. 更改oracle字符集编码american_america.zh16gbk 改为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    注册表NLS_LANG值改为SIMPLIFIED CHINESE_CHINA.ZHS16GBK

  2. Shell:sed用法 - 查找并替换字符串

    原文链接 语法 sed 's/serach_str/replace_str/g' file_path 在某个文件中查找所有的serach_str并替换为replace_str 参数 描述 serach ...

  3. MySQL 【进阶查询】

    数据类型介绍 整型 tinyint, # 占1字节,有符号:-128~127,无符号位:0~255 smallint, # 占2字节,有符号:-32768~32767,无符号位:0~65535 med ...

  4. JS中iframe子页面与父页面之间通信

    iframe子页面与父页面通信根据iframe中src属性是同域链接还是跨域链接,通信方式也不同. 一.同域下父子页面的通信 父页面parent.html <html> <head& ...

  5. 洛谷1074 靶状数独dfs 排序、记录、搜索

    题目网址:https://www.luogu.com.cn/problem/P1074 大意就是在一个9*9的数独中填数,要求行列宫都是九个互不相同的数字,给定一定的得分机制,要求求解最大得分.思路大 ...

  6. leetcode 签到 836. 矩形重叠

    836. 矩形重叠 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的 ...

  7. Java基础语法(6)-注释

    title: Java基础语法(6)-注释 blog: CSDN data: Java学习路线及视频 用于注解说明解释程序的文字就是注释. 提高了代码的阅读性:调试程序的重要方法. 注释是一个程序员必 ...

  8. sql-lib闯关11-20关

    从第11关开始,我们就进入到了POST注入的世界了. POSTpost是一种数据提交方式,它主要是指数据从客户端提交到服务器端,例如,我们常常使用的用户登录模块.网站的留言板模块等,在这些功能模块中我 ...

  9. 干货 | Python进阶之学习笔记(一)

    认识Python Python应用场景 Python基础语法 一.认识Python Python 是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell) ...

  10. Ubuntu+Hexo+Github搭建个人博客

    Ubuntu+Hexo+Github搭建个人博客 目录 目录 目录 1. 简介 环境 2. Git安装及配置 2.1 安装Git 2.2 创建Git仓库 2.3 配置git仓库 2.4 添加公钥 3. ...