NavigationControllerWithBlocks 0.0.1

NavigationControllerWithBlocks 0.0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

无人认领 维护。



  • 作者:
  • Morissard Jérome

UINavigationController缺少方法 !(可选的完成块的push / pop)。实现使用UINavigationController委托。

此项目提供:

  • 一个完成块来管理您的推送/弹出事件,
  • 一个安全的方法来同时推送/弹出多个控制器。
   [self.navigationController popViewControllerAnimated:YES withCompletionBlock:NULL];
   [self.navigationController popViewControllerAnimated:YES withCompletionBlock:NULL];
   [self.navigationController popViewControllerAnimated:YES withCompletionBlock:NULL];
  • 不再有“嵌套弹出动画可能导致导航栏损坏”,
  • 不再有“在意外的状态下完成导航转换。导航栏子视图树可能会损坏。”
  • 不再因为多个动画之间的控制器被释放而崩溃。

新方法

- (void)pushViewController:(UIViewController *)viewController 
                 animated:(BOOL)animated 
      withCompletionBlock:(JMONavCompletionBlock)completionBlock;

- (void)popViewControllerAnimated:(BOOL)animated 
              withCompletionBlock:(JMONavCompletionBlock)completionBlock;
- (void)popToRootViewControllerAnimated:(BOOL)animated
                    withCompletionBlock:(JMONavCompletionBlock)completionBlock;

使用方法

  • 使用类别(UINavigationController+CompletionBlock),只需调用方法即可激活自动委托。
- (void)activateCompletionBlock;

并使用弹出/推送方法

[self.navigationController popViewControllerAnimated:YES withCompletionBlock:NULL];
[self.navigationController pushViewController:vc animated:YES withCompletionBlock:^(BOOL successful) {
   NSLog(@"Hi ! Push done !");
}];
  • 使用JMONavigationController(继承自UINavigationController),无需做什么,默认初始化器已覆盖以调用activateCompletionBlock,但使用弹出/推送方法
[self.navigationController popViewControllerAnimated:YES withCompletionBlock:NULL];
[self.navigationController pushViewController:vc animated:YES withCompletionBlock:^(BOOL successful) {
   NSLog(@"Hi ! Push done !");
}];

Image