在點擊push下一個頁面時,因為各種原因,點一下cell或按鈕沒有響應,用戶可能就多點幾下,這時候會打開好幾個一樣的頁面。
這是因為push后的頁面有耗時操作或者剛好push到另一個頁面時,另一個頁面正好在reloadData卡住主線程。造成點擊cell時卡住了。
這時,我們可以通過重寫導航控制器的方法來解決這個問題。
>>>>>>>>>>>>>>>>>>?
#import <UIKit/UIKit.h>
@interfaceNaviViewController?:?UINavigationController
@end
>>>>>>>>>>>>>>>>>>>
#import "NaviViewController.h"
@interfaceNaviViewController?()
//?記錄push標志
@property(nonatomic,getter=isPushing)BOOLpushing;
@end
@implementationNaviViewController
-?(void)viewDidLoad?{
? ? ? ? ? [superviewDidLoad];
? ? ? ? ? ?self.delegate=self;
}
-?(void)pushViewController:(UIViewController*)viewControlleranimated:(BOOL)animated?{
? ? ? ? if(self.pushing==YES)?{
? ? ? ? ? ? ? ? ?NSLog(@"被攔截");
? ? ? ? ? ? ? ? ?return;
? ? ? ? }else{
? ? ? ? ? ? ? ? ?NSLog(@"push");
? ? ? ? ? ? ? ? ?self.pushing=YES;
? ? ? ? }
[superpushViewController:viewControlleranimated:animated];
}
#pragma?mark?-?UINavigationControllerDelegate
-(void)navigationController:(UINavigationController*)navigationControllerdidShowViewController:(UIViewController*)viewControlleranimated:(BOOL)animated?{
? ? ? ? ? ? ?self.pushing=NO;
}
@end