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. mpy开发物联网系列:1.mpy与服务器数据库方案

    ini配置文件与非关系型数据库 在使用micropython开发esp32过程中,经常涉及到一些数据的配置读取,而esp32本身micropython难以安装很多数据库客户端的库,只能基于本地文件使用 ...

  2. hdu2087kmp模板练习

    题目网址:http://icpc.njust.edu.cn/Problem/Hdu/2087/ 代码: #include<bits/stdc++.h> using namespace st ...

  3. BIT-逆序数

    2019-12-17 09:42:44 问题描述: 问题求解: 逆序数问题非常经典,使用树状数组可以高效的解决这个问题. public List<Integer> countSmaller ...

  4. OpenCV-Python 图像分割与Watershed算法 | 三十四

    目标 在本章中, 我们将学习使用分水岭算法实现基于标记的图像分割 我们将看到:cv.watershed() 理论 任何灰度图像都可以看作是一个地形表面,其中高强度表示山峰,低强度表示山谷.你开始用不同 ...

  5. 有个原则就是实体类还是controller入参都应该是 包装类型

    问题说明 我在使用JPA作为项目的ORM框架的时候,在分页查询中,不管咋样使用查询不出来数据,然后发现Hibernate构建的查询SQL中,在where子句中带上了createTime=0这个条件.这 ...

  6. 一次作业过程及其问题的记录:mysql建立数据库、建表、查询和插入等

    前言 这次的作业需要我建立一个小的数据库. 这次作业我使用了mysql,进行了建库.建表.查询.插入等操作. 以下是对本次作业相关的mysql操作过程及过程中出现的问题的记录. 正文 作业中对数据库的 ...

  7. Polya 定理相关题目

    参考知识链接   关于枚举旋转置换:   前两题都是枚举了 n 种旋转, 但这个可以优化到\(O(\sqrt{n})\) (这个其实是基本操作). 考虑到每个循环节的长度都是 n 的因数, 所以可以枚 ...

  8. springboot集成通用mapper详细配置

    通常,我们利用mybatis写持久层方法.要么按照传统定义mapper方法,定义xml文件的方式,全部手写.要么需要通过mybatis-generator逆向工程插件生成大量的xxxExample文件 ...

  9. 1642: 【USACO】Payback(还债)

    1642: [USACO]Payback(还债) 时间限制: 1 Sec 内存限制: 64 MB 提交: 190 解决: 95 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 &quo ...

  10. Vertica的这些事(二)——SQL-Server、Oracle、MySQL和Vertica数据库常用函数对比

    SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 绝对值 S:select abs(-1) value O ...