Known effort to update MGSplitViewController for iOS5 and Storyboards?

。_饼干妹妹 提交于 2019-12-10 20:37:04

问题


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:

  • How to hide master view in UiSplitviewcontroller in ipad
  • How do I hide the master part of a UISplitViewController programatically?
  • Integrate MGSplitViewController in Universal App
  • MGSplitViewController using Storyboards

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.


回答1:


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.

Heath Borders port to iOS 5.1




回答2:


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


来源:https://stackoverflow.com/questions/10704609/known-effort-to-update-mgsplitviewcontroller-for-ios5-and-storyboards

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!