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
@end
segueIdentifier
ContainerDataManager 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 install
Bruno Rendeiro, [email protected].
ContainerViewManager 在 MIT 许可证下可用。有关更多信息,请参阅 许可证 文件。