這篇文章主要處理加載多層網(wǎng)頁返回的問題,其實(shí)功能很簡(jiǎn)單,自己當(dāng)時(shí)做的時(shí)候沒帶腦子,找了好久資料沒有想要的(其實(shí)是自己不長(zhǎng)心),記錄一下.
1.在導(dǎo)航上創(chuàng)建一個(gè)關(guān)閉按鈕的btn,默認(rèn)alpha =0
UIButton *btn =[UIButton buttonWithType:UIButtonTypeCustom];
[self.nav addSubview:btn];
[btn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(WIDTH_CONSTARIN(60));
make.top.offset(STATUS_BAR_HEIGHT);
make.size.mas_equalTo(CGSizeMake(60, 44));
}];
btn.alpha =0;
[btn setTitle:@"關(guān)閉" forState:UIControlStateNormal];
btn.titleLabel.font =FONT(16.f);
[btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[btn addTarget:self action:sel_registerName("closeClick") forControlEvents:UIControlEventTouchUpInside];
_closeBtn =btn;
2.處理關(guān)閉按鈕是否顯示(以wkWeb代理為例)
//index不用解釋了
//pageBack參數(shù)主要是為了放置index在返回時(shí)調(diào)用didFinishNavigation再次+1的問題,可以理解為是push和pop,
@property (nonatomic, assign) NSInteger index;//記錄加載的頁數(shù)
@property (nonatomic, assign) BOOL pageBack;//判斷是否點(diǎn)擊了返回
// 頁面加載完成之后調(diào)用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
if (!_pageBack) {//是新頁面 index 就+1
++_index;
}
_pageBack = NO;
if (_index >=2 ) {//頁數(shù)大于等于2 關(guān)閉按鈕就顯示
_closeBtn.alpha =1;
}else{
_closeBtn.alpha =0;
}
}
3.處理返回和關(guān)閉邏輯
//返回操作
- (void)leftViewClick {
_pageBack = YES;//是pop,返回結(jié)束后,index不用+1
if (_index >=2) {
_index--;
[self.WKWebView goBack];
}else{//就一頁了 可以直接退出去
[self.navigationController popViewControllerAnimated:YES];
}
}
//關(guān)閉操作
- (void)closeClick {
[self.loading removeFromSuperview];
[self.navigationController popViewControllerAnimated:YES];
}