需求背景
从原生页面的一个按钮,点击之后跳转到了一个H5的页面A,A页面中又有一个按钮,点击之后,又加载了一个新的H5页面B,从B点击一个按钮,又加载一个新的H5页面C,如果此时我们点击左上角的返回按钮,会直接返回到我们的原生页面;那怎样做到点页面C左上角的返回按钮返回到页面B,点页面B左上角的返回按钮返回到页面A,就是每次点击返回按钮都返回到当前页面的上一级页面呢??
实现思路
重新定制返回按钮,从C页面判断是否还有上一级H5页面可供返回,如果有上一级页面还是H5,点击左上角的返回则返回到B页面,同时在B页面的左上角加上一个关闭按钮,这个关闭按钮的作用主要是为了关闭所有的H5的页面,直接返回到原生的页面;如果不点击关闭按钮,还是点击返回,则从B页面返回到A页面;再次点击返回,则关闭了H5的页面,回到了原生的页面;
代码实现
- 判断当前H5是否可以返回
/**
返回按钮点击方法实现
*/
- (void)backButAction{
//判断当前页面的上一级页面是否是WebView
if ([self.webView canGoBack]) {
//返回上一级h5页面
}else{
//返回原生页面
}
}
- 返回上一级h5页面
[self.webView goBack];
- 返回原生页面
/**
关闭WebView,返回到原生界面
*/
- (void)closeWebView{
[self.navigationController popViewControllerAnimated:YES];
}
源码: