需求背景
從原生頁面的一個按鈕,點擊之後跳轉到了一個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];
}
源碼: