UINavigationController說明
在iOS中的UINavigationController中,存在兩種返回操作
- 點擊返回按鈕實現(xiàn)頁面返回
- 側(cè)邊欄滑動返回
需求說明
在項目運營中,會頻繁遇到打開WebView的Controller操作。如果每次都創(chuàng)建新的Controller,并且創(chuàng)建WebView,會比較占用內(nèi)存。
所以現(xiàn)在想到,用個數(shù)組保存2、3個可復用的Controller。
操作描述
以上都是廢話,可以直接看下面的內(nèi)容。
在UINavigationController中的滑動返回,可能用戶滑動一半,又回到停留界面,這個操作你應(yīng)該會懂的。
失敗的解決方案
第一個想法是監(jiān)聽popViewControllerAnimated:(BOOL)animated方法。但是用了動畫效果后,這個方法針對上面說的操作就無效了。
最終的解決方案
在需要復用的Controller中,監(jiān)聽viewDidDisappear:(BOOL)animated方法
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
if (self.navigationController == nil) {
[APPUtils addWebViewController:self];
}
NSLog(@"%@: %ld, %@", self, viewCount, self.navigationController);
}
如此就可以監(jiān)聽,用戶的的確確是滑動返回了。在此基礎(chǔ)上,我們就可以做更多的監(jiān)聽操作了。
至于某歌/某度上搜索到的手勢監(jiān)聽、willMoveToParentViewController:(UIViewController *)parent,真的不是特別優(yōu)雅。
如果對您有幫助,點個在贊再走吧