Skip to content

Instantly share code, notes, and snippets.

@craigmarvelley
Created September 27, 2014 21:56
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save craigmarvelley/c3cbbb717c3ef957cbbe to your computer and use it in GitHub Desktop.
Save craigmarvelley/c3cbbb717c3ef957cbbe to your computer and use it in GitHub Desktop.
Managing separation and collapsing of the new UISplitViewController in iOS 8
#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
@theLateWizard
Copy link

What does your UISplitViewControllerDelegateService.h inherit from?

@craigmarvelley
Copy link
Author

Sorry, just saw this - NSObject.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment