最近遇到一個自定義類Tabbar的視圖,于是用模態(tài)方式去自由切換viewController,關(guān)鍵方法是:
- (void)transitionFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^ __nullable)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(5_0);
不過在完成之后 來回快速點擊會發(fā)現(xiàn)崩潰的問題
Unbalanced calls to begin/end appearance transitions for xxx
發(fā)現(xiàn) transitionFromViewController 這個方法若當(dāng)前viewController已在最前,就不應(yīng)該在調(diào)用該方法,于是解決辦法如下:
- (void)replaceFromViewController:(ALYBaseViewController *)first toViewController:(ALYBaseViewController *)second index:(NSInteger)idx completion:(void (^)(ALYBaseViewController *, ALYBaseViewController *, NSInteger))completion{
// 判斷是否是一個vc
if ([second isEqual:first] return;
[self addChildViewController:second];
[self transitionFromViewController:first toViewController:second duration:0 options:UIViewAnimationOptionTransitionNone animations:^{
[second didMoveToParentViewController:self];
[first willMoveToParentViewController:nil];
[first removeFromParentViewController];
completion(first, second, idx);
} completion:^(BOOL finished) {
if (finished) {
}
}];
}
記錄一下。