Commit 51a12a36 authored by 汪洋's avatar 汪洋

添加NavigationCompletionBlock扩展

parent ccafc032
......@@ -23,11 +23,14 @@ NS_ASSUME_NONNULL_BEGIN
- (nullable NSArray<__kindof UIViewController *> *)popToRootViewControllerAnimated:(BOOL)animated
completion: (void (^ __nullable)(void))completion;
- (void)pushAndKillToRoot:(UIViewController *)controller;
- (void)pushAndKillToRoot:(UIViewController *)controller NS_SWIFT_NAME(pushAndKillToRoot(_:));
/**
push动画完成后删除navigation中controller与controllerClass之间的controllers。
push动画完成后删除navigation中controller与controllerClass之间的controllers,
然后再从controllerClass往前删除count个,包含controllerClass
注意:controllerClass如果有多个只使用离controller最近那个
*/
- (void)push:(UIViewController *)controller andKillTo:(Class)controllerClass;
- (void)push:(UIViewController *)controller andKillTo:(Class)controllerClass further:(NSInteger)count;
@end
NS_ASSUME_NONNULL_END
......@@ -57,16 +57,15 @@
[CATransaction commit];
}
/**
push动画完成后删除navigation中controller与controllerClass之间的controllers。
注意:controllerClass如果有多个只使用离controller最近那个
*/
- (void)push:(UIViewController *)controller andKillTo:(Class)controllerClass {
- (void)push:(UIViewController *)controller andKillTo:(Class)controllerClass further:(NSInteger)count {
NSMutableArray *result = [self.navigationController.viewControllers mutableCopy];
do {
[result removeLastObject];
} while (![result.lastObject isMemberOfClass:controllerClass]);
} while (![result.lastObject isMemberOfClass:controllerClass] && result.count > 0);
if (count > 0 && result.count > count) {
[result removeObjectsInRange:NSMakeRange(result.count - count, count)];
}
[CATransaction setCompletionBlock:^{
[result addObject:controller];
......@@ -76,5 +75,4 @@
[self.navigationController pushViewController:controller animated:YES];
[CATransaction commit];
}
@end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment