测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
Released最后发布 | 2014年12月 |
由 Martin Rybak 维护。
UINavigationController 的子类,具有接受 push 和 pop 块的 pushViewController 方法,以及每个 pushed 控制器的 navigation bar 和 toolbar 可见性设置。以下是一个示例
#import "MRNavigationController.h"
self.vc1 = [[UIViewController alloc] init];
self.vc2 = [[UIViewController alloc] init];
self.nav = [[MRNavigationController alloc] initWithRootViewController:self.vc1 navigationBarHidden:YES toolbarHidden:YES];
[self.nav pushViewController:self.vc2 animated:YES navigationBarHidden:NO toolbarHidden:NO push:^{
NSLog(@"VC1 pushed VC2");
}
pop:^{
NSLog(@"VC2 popped");
self.vc2 = nil;
}];
在这个示例中,导航控制器将显示没有导航栏和工具栏的 vc1 视图控制器。然后打印出第一条日志语句。随后将动画显示具有导航栏和工具栏的 vc2 视图控制器。当按下其返回按钮时,将打印第二条日志语句,vc2 视图控制器将动画离开并从内存中清除,同时不带有导航栏和工具栏的 vc1 视图控制器将再次出现。
无论是否按下返回按钮或通过标准返回方法手动弹出视图控制器,都会执行 pop 块
以下父类方法仍然可以使用,但 pushed 视图控制器将默认设置为 navigationBarHidden:NO 和 toolbarHidden:YES,并且不会执行 push 或 pop 块
您仍然可以使用自己的代理,这得益于一个出色的库——HTDelegateProxy。
要查看实况示例,请下载并运行 Xcode 项目。
我已经以 CocoaPod 的形式发布了这个库,这是安装它的最简单方法。否则,只需将以下 类文件 和 HTDelegateProxy 文件手动复制到您的项目中。