HeaderViewSegueManager 负责告诉您的 UIViewController 应该执行哪个 segue。
将您的 container 放入 UIViewController 后,应该为其命名 embedSegue 标识符
您还需要确保嵌套的 UIViewController 自定义类为 HeaderViewSegueManager
然后在您的 UIViewController 类中覆盖 prepareForSegue:sender:,并添加对 HeaderViewSegueManager 和您自己的 ContainerDataManager 子类的引用,请注意,传递的是类类型而不是其实例对象!
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"embedSegue"]) {
self.containerView = (ContainerViewSegueManager*)segue.destinationViewController;
self.containerView.containerDataClass = [CVMViewDataManager class];
}
}确保 shouldPerformSegueWithIdentifier:sender: 返回 YES
-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender{
return YES;
}从您的 HeaderViewSegueManager 到您的 UIViewController 的所有 segues 应该是 EmptySegue 类型,并具有标识符
ContainerDataManager 负责根据您应用程序的数据和需求决定传递给 HeaderViewSegueManager 的 segueIdentifier
ContainerDataManager您应该创建 ContainerDataManager 的一个子类,并覆盖 additionalSetup 方法
MyContainerDataManager.h
#import <Foundation/Foundation.h>
#import <ContainerDataManager/ContainerDataManager.h>
@interface CVMViewDataManager : ContainerDataManager
@endsegueIdentifierContainerDataManager additionalSetup 方法将为您类的实现所覆盖。您必须调用 [super additionalSetup],并且 self.currentSegueIdentifier 必须不是 nil。
MyContainerDataManager.m
-(void)additionalSetup{
_array = @[@"1",@"2"];
self.currentSegueIdentifier = @"FirstViewController";
if ([_array count] != 0) {
self.currentSegueIdentifier = @"FirstViewController";
self.parent.navigationItem.title = @"FIRST";
}
else {
self.currentSegueIdentifier = @"SecondViewController";
self.parent.navigationItem.title = @"SECOND";
}
[super additionalSetup];
}您可以使用 HeaderViewSegueManager swapFromViewController:toViewController 来轻松地在 UIViewController 之间切换。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
CVMFirstViewController *firstView = [storyboard instantiateViewControllerWithIdentifier:@"CVMFirstViewController"];
[ContainerViewSegueManager swapFromViewController:self toViewController:firstView];ContainerViewManager 支持 iOS 8.3 及以上版本。
ContainerViewManager 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.3'
pod 'ContainerViewManager', '~> 1.0.5'然后,运行以下命令
$ pod installBruno Rendeiro, [email protected].
ContainerViewManager 在 MIT 许可证下可用。有关更多信息,请参阅 许可证 文件。