已知为iOS5和Storyboard更新MGSplitViewController的工作?

时间:2012-05-22 14:57:54

标签: ios ipad storyboard uisplitviewcontroller

我正在开发一款iPad应用程序,需要隐藏/显示拆分视图的主控制器。

相关的SO答案注意到Matt Gemmell的MGSplitViewController

MGSplitViewController非常完美 - 甚至提供了一种调整主从视图比例的方法。

优秀!除了它与使用故事板和ARC的最新Xcode不一致。

我看到一个拉动请求(从9个月前开始)转换为ARC for iOS4,但仍然需要做一些工作才能使故事板友好。

有没有人知道在最新的iOS开发环境中更新这个开源宝石以保持正常行为的持续努力?

如果不这样做,如何将它集成到Xcode故事板/ iOS5项目中的示例/教程将非常有用。

2 个答案:

答案 0 :(得分:2)

看起来如果等待的时间足够长,每个好的包装都会得到应有的关注。

再次感谢Matt Gemmell提供的精彩套餐,以及对Heath Borders采取主动行动的称赞。

Heath Borders port to iOS 5.1

答案 1 :(得分:2)

我能够解决故事板问题。我有一个具有主要详细故事板设置的通用应用程序,所以我将它们全部留在原位并将应用程序的初始化更改为不使用故事板,而是以编程方式在我的applicationDidFinishLaunching中设置它:

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];

我的AppDelegate.h看起来像:

@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