Created
September 27, 2014 21:56
-
-
Save craigmarvelley/c3cbbb717c3ef957cbbe to your computer and use it in GitHub Desktop.
Managing separation and collapsing of the new UISplitViewController in iOS 8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "UISplitViewControllerDelegateService.h" | |
#import "NoteViewController.h" | |
@interface UISplitViewControllerDelegateService () <UISplitViewControllerDelegate> | |
@end | |
@implementation UISplitViewControllerDelegateService | |
- (id)initWithSplitViewController:(UISplitViewController *)controller { | |
self = [super init]; | |
if (!self) { | |
return nil; | |
} | |
self.splitViewController = controller; | |
controller.delegate = self; | |
return self; | |
} | |
#pragma mark - Split view | |
- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController { | |
if ([secondaryViewController isKindOfClass:[UINavigationController class]] | |
&& [[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[NoteViewController class]] | |
&& ([(NoteViewController *)[(UINavigationController *)secondaryViewController topViewController] note] == nil)) { | |
// If the detail controller doesn't have an item, display the primary view controller instead | |
return YES; | |
} | |
return NO; | |
} | |
- (UIViewController *)splitViewController:(UISplitViewController *)splitViewController | |
separateSecondaryViewControllerFromPrimaryViewController:(UIViewController *)primaryViewController{ | |
if ([primaryViewController isKindOfClass:[UINavigationController class]]) { | |
for (UIViewController *controller in [(UINavigationController *)primaryViewController viewControllers]) { | |
if ([controller isKindOfClass:[UINavigationController class]] && [[(UINavigationController *)controller visibleViewController] isKindOfClass:[NoteViewController class]]) { | |
return controller; | |
} | |
} | |
} | |
// No detail view present | |
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; | |
UINavigationController *detailView = [storyboard instantiateViewControllerWithIdentifier:@"detailView"]; | |
// Ensure back button is enabled | |
UIViewController *controller = [detailView visibleViewController]; | |
controller.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem; | |
controller.navigationItem.leftItemsSupplementBackButton = YES; | |
return detailView; | |
} | |
@end |
Sorry, just saw this - NSObject.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
What does your UISplitViewControllerDelegateService.h inherit from?