iOS开发——常见错误——使用MJRefresh返回上一个界面蹦掉的情况
最近在使用MJRefresh框架时发现了一个bug
下面是我的源代码
前一个界面
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
// 显示网页
CHGWebViewController *webVc = [[CHGWebViewController alloc] init];
// 设置数据
webVc.data = self.data[indexPath.row];
[self.navigationController pushViewController:webVc animated:YES];
}
后一个界面
#import "CHGWebViewController.h"
#import "CHGData.h"
#import "MJChiBaoZiHeader.h" @interface CHGWebViewController ()<UIWebViewDelegate> @property (nonatomic, weak) UIWebView *webView; @end @implementation CHGWebViewController - (void)viewDidLoad {
[super viewDidLoad];
// 添加背景
self.view.backgroundColor = [UIColor whiteColor]; // 显示标题
self.title = self.data.username; // 1.网页控件
UIWebView *webView = [[UIWebView alloc] init]; // 2.设置frm
webView.frame = self.view.bounds;
self.webView = webView; // 3.添加webview
[self.view addSubview:webView]; // 4.显示网页
NSURL *url = [NSURL URLWithString:self.data.url];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 用于调整界面 (适配手机版网页)
webView.scalesPageToFit = YES;
// 加载网页
[webView loadRequest:request];
[webView reload]; // 5. 设置代理 添加下拉刷新
webView.delegate = self; __weak UIScrollView *scrollView = webView.scrollView; // // 添加下拉刷新控件
// scrollView.header = [MJChiBaoZiHeader headerWithRefreshingBlock:^{
// [webView reload];
// }];
scrollView.header = [MJChiBaoZiHeader headerWithRefreshingTarget:self refreshingAction:@selector(reload)]; [webView.scrollView.header beginRefreshing]; } - (void)reload{ [self.webView reload];
} #pragma mark - webViewDelegate
- (void)webViewDidFinishLoad:(nonnull UIWebView *)webView
{
[self.webView.scrollView.header endRefreshing];
} - (void)dealloc
{
NSLog(@"%s",__func__);
}
@end
注意:
当你使用Block这个方法来添加下拉刷新时,如果数据没有加载完毕,然后返回到上一个界面,程序就蹦了
scrollView.header = [MJChiBaoZiHeader headerWithRefreshingBlock:^{
[webView reload];
}];
个人的理解:
当你返回上一个界面时,CHGWebViewController这个控制器已经被销毁了,而数据仍然在加载中,当数据加载完毕时,
webView已经被销毁,无法接收数据,这时就会报一个野指针错误
解决方案:
解决的办法已经在代码中
scrollView.header = [MJChiBaoZiHeader headerWithRefreshingTarget:self refreshingAction:@selector(reload)];
也就是使用这个调用函数的方法添加下拉刷新
至于为什么,那就要去研究下MJ老师的框架了
先这样吧,以后找到具体原因再回来更新博客
iOS开发——常见错误——使用MJRefresh返回上一个界面蹦掉的情况的更多相关文章
- Android - 返回上一个界面finish()方法
返回上一个界面finish()方法 本文地址: http://blog.csdn.net/caroline_wendy Android能够使用finish()方法,实现函数返回的功能.当不是Activ ...
- Android 重写物理返回键,在h5页面中返回上一个界面
实现:Activity中放置webview,跳转到h5界面,点击返回键,不退出h5界面,而是返回上一个h5界面 /** * 改写物理按键--返回的逻辑,希望浏览的网页后退而不是退出浏览器 * @par ...
- iOS开发 常见错误
一.NSAppTransportSecurity 错误提示:NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL ...
- iOS开发常见错误(转)
//大全 //读取数据库数据 -(void)movethesqlitefile{ NSString *sourcepath=[[NSBundle mainBundle]pathForResource: ...
- iOS开发常见错误解决方法
1.出现下面的错误: StoryboardApp[8593:207] Failed to instantiate the default view controller for UIMainStory ...
- IOS开发常见错误
. 问题表现:什么情况?方法居然无法拉线? 问题简述:ios的空间拉线到一个.h .m文件中 居然多次拖动无效.. 问题解决:ios的空间响应单单在代码中创建一个方法是没用的,这个时候通常跟空间是没有 ...
- IOS开发常见错误整理
1.Cannot create an NSPersistentStoreCoordinator with a nil model 这是在执行到这段代码时引发的: - (void)viewDidLoad ...
- ios7--系统自带的向右滑动手势返回上一个界面
当从控制器A push到控制器B,我们返回控制器A,除了使用按钮返回 [self.navigationController pushViewController:Vc animated:YES]; 还 ...
- iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决
我相信针对每一个iOS开发者来说~除了根视图控制器外~所有的界面通过导航栏push过去的界面都是可以通过右滑来返回上一个界面~其实~在很多应用和APP中~用户已经习惯了这个功能~然而~作为开发者的我们 ...
随机推荐
- 基于WS-BPEL2.0的服务组合研究
http://tech.it168.com/soadocument/2008-01-03/200801031332376.shtml WS-BPEL是为组合Web服务而制定的一项规范.它的前身是由IB ...
- wpf 窗体内容旋转效果 网摘
<Window x:Class="simplewpf.chuangtixuanzzhuan" xmlns="http://schemas.micros ...
- JS定时器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- easyUI Form表单的密码验证是否相同
一.js文件中的代码: $(function(){ $.extend($.fn.validatebox.defaults.rules, { equals: {//定义一个比较相等与否的函数 valid ...
- sublime2的快捷键
1.快速文件转换 与sublime2中搜索文件快捷键一样,ctrl+p ctrl + p //window comm + p //mac 2.在代码中搜索 在所有已加载的文件中查找一个特定的字符串,支 ...
- ecshop目录结构
ECShop 最新程序 的结构图及各文件相应功能介绍ECShop文件结构目录┣ activity.php 活动列表┣ affiche.php 广告处理文件┣ affiliate.php 生成商品列表┣ ...
- JAVA中的聚集和组合的区别和联系
选自<JAVA语言程序设计-基础篇(原书第8版)> 定义:一个对象可以包含另一个对象.这两个对象之间的关系称为组合(composition). 组合实际上是聚集关系的一种特殊形式.聚集模拟 ...
- jsp日期插件My97DatePicker
jsp日期插件My97DatePicker 强大的日期控件 使用方便简单 (2010-10-30 18:59:12) 转载▼ 标签: js javascript 日期插件 jsp it 分类: jqu ...
- PhpStorm 快捷键
不容易记住的: Ctrl + Shift + F 查找文本,在项目目录或指定的目录 Ctrl + Shift + R 查找文本并替换,在项目目录或指定的目录 Ctrl + E 打开最近关闭的 ...
- 部署Redis for Windows服务
一.环境 Redis Windows 版本:2.8.2104 二.植入Windows服务 > redis-server.exe --service-install redis.window ...