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中~用户已经习惯了这个功能~然而~作为开发者的我们 ...
随机推荐
- 什么是QName
看代码时经常碰到QName,当时对这个东东具体什么意思也是不太明白:今天在看SOAP消息的时候,想到这个东东,就去仔细看了下.QName其实就是Qualified Name的简称,在"Nam ...
- JS左右栏目添加器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Nginx实现简易泛域名CDN节点
如何使用Nginx泛域名解析+反向代理+静态资源缓存呢? 安装nginx,安装过程不再赘述,记得带上pcre.gzip.sub.status这几个模块,另外如果想开通在线清理缓存功能,需要安装ngx_ ...
- Quartz.NET总结(三)Quartz 配置
前两篇文章,已经介绍了Quartz.NET的使用和Cron表达式表达式的写法,今天说一说Quartz的配置,Quartz相关的配置有三个quartz.config.quartz_jobs.xml.lo ...
- 轻量级router[类似laravel router]
github地址:https://github.com/NoahBuscher/Macaw/blob/master/Macaw.php 代码加上一些注释,方便以后再看. <?php namesp ...
- ASP.NET WebForm中用async/await实现异步
1. 在.aspx中添加异步标记 <%@ Page Language="C#" Async="true"%> 2. 在.aspx.cs或者.ascx ...
- C#和SQL实现的字符串相似度计算代码分享
http://www.jb51.net/article/55941.htm C#实现: 复制代码 代码如下: #region 计算字符串相似度 /// <summary> ...
- Effective Objective-C 2.0 — 第三条:多用字面量语法,少用与之等价的方法
第三条:多用字面量语法,少用与之等价的方法 几个类:NSString NSNumber NSArray NSDictionary 字面量语法是一种语法糖(syntactic sugar) NSS ...
- Centos安装Kafka集群
kafka是LinkedIn开发并开源的一个分布式MQ系统,现在是Apache的一个孵化项目.在它的主页描述kafka为一个高吞吐量的分布式(能 将消息分散到不同的节点上)MQ.在这片博文中,作者简单 ...
- asp.net core 笔记
dnvm use 1.0.0-rc1-final -r clr 切换版本