Reputation: 407
I'm working on an iPad app that will need to hide/show the master controller of a split view.
Related SO answers note Matt Gemmell's MGSplitViewController:
MGSplitViewController would be perfect - even providing a way to adjust the ratio of master-to-detail views.
Fantastic! Except it doesn't play nice with the latest Xcode using storyboards and ARC.
I see a pull request (from 9 months ago) to convert to ARC for iOS4 but that still leaves it needing some work to be storyboard friendly.
Does anyone know of ongoing effort to update this jewel of open source to behave properly in the latest iOS development environment?
Failing that, examples/tutorials of how to integrate it into an Xcode storyboard/iOS5 project would be very useful.
Upvotes: 3
Views: 2091
Reputation: 2562
I was able to work around the storyboard issue. I had a universal app with master detail storyboard setup so I left them all in place and changed the initialization of the app to not use storyboards and instead programmatically set it up in my applicationDidFinishLaunching like so:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
self.masterController = [storyboard instantiateViewControllerWithIdentifier:@"masterController"];
self.detailController = [storyboard instantiateViewControllerWithIdentifier:@"detailController"];
self.splitViewController = [[MGSplitViewController alloc] init];
self.splitViewController.masterViewController = self.masterController;
self.splitViewController.detailViewController = self.detailController;
ACALandingVC* landingVC = [self.detailController.childViewControllers objectAtIndex:0];
landingVC.splitController = self.splitViewController;
self.splitViewController.delegate = landingVC;
//self.splitViewController.splitWidth = 5;
self.splitViewController.allowsDraggingDivider = YES;
self.splitViewController.dividerStyle = MGSplitViewDividerStylePaneSplitter;
self.splitViewController.splitPosition = 350;
self.splitViewController.splitWidth = 10;
self.window.rootViewController = self.splitViewController;
}
else {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
UITabBarController* firstVC = [storyboard instantiateInitialViewController];
self.window.rootViewController = firstVC;
[[UINavigationBar appearance] setTintColor:[UIColor lightGrayColor]];
}
[self.window makeKeyAndVisible];
My AppDelegate.h looks like:
@class MGSplitViewController;
@interface ACAAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, strong) MGSplitViewController* splitViewController;
@property (nonatomic, strong) UITabBarController* masterController;
@property (nonatomic, strong) UINavigationController* detailController;
@end
Upvotes: 2
Reputation: 407
It looks like if you wait long enough, every good package will get the attention it's due.
Thanks again to Matt Gemmell for a great package, and kudos to Heath Borders for taking the initiative.
Upvotes: 2