3

分割ビューのマスターコントローラーを非表示/表示する必要があるiPadアプリに取り組んでいます。

関連する SO の回答は、Matt Gemmell のMGSplitViewControllerに注意してください。

MGSplitViewController は完璧です - マスター ビューと詳細ビューの比率を調整する方法さえ提供します。

素晴らしい!ただし、ストーリーボードと ARC を使用する最新の Xcode ではうまく動作しません。

iOS4 用の ARCに変換するためのプル リクエスト (9 か月前から) が表示されますが、ストーリーボード フレンドリーにするためにはまだ作業が必要です。

最新の 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 に答える