3

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

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

MGSplitViewController 将是完美的——甚至提供一种调整主视图与细节视图比例的方法。

极好的!除非它与使用故事板和 ARC 的最新 Xcode 不兼容。

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

有谁知道正在努力更新这个开源的宝石以在最新的 iOS 开发环境中正常运行?

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

4

2 回答 2

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
于 2013-01-15T22:37:56.690 回答
2

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

再次感谢 Matt Gemmell 提供的出色软件包,并感谢 Heath Borders 采取主动。

Heath Borders 移植到 iOS 5.1

于 2012-07-14T03:38:07.970 回答