Как я могу создать UISplitViewController в моем приложении панели вкладок (iPad)? - PullRequest
3 голосов
/ 22 марта 2012

Я видел несколько приложений, которые используют UISplitViewController внутри вкладки. Это именно то, что мне нужно сделать, однако у меня есть несколько проблем.

Пока я сделал следующее:

В моем классе приложения делегата ...

// Set up the cuts tab
UIViewController *splitViewController = [[SplitViewController alloc] initWithNibName:@"SplitViewController" bundle:nil];

// Set up the tab bar
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:splitViewController, nil];

Тогда в SplitViewController.h есть ...

#import <UIKit/UIKit.h>

@class LeftView;
@class RightView;

@interface SplitViewController : UIViewController
{
    UISplitViewController *splitView;
    LeftView *leftView;
    RightView *rightView;
}


@property(nonatomic, retain)IBOutlet UISplitViewController *splitView;
@property(nonatomic, retain)IBOutlet LeftView *leftView;
@property(nonatomic, retain)IBOutlet RightView *rightView;


@end

Тогда в соответствующем файле .m у меня есть ...

#import "SplitViewController.h"

@implementation SplitViewController
@synthesize splitView, leftView, rightView;

#pragma mark - View Lifecycle

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
    {
        self.title = @"Tab A";
        self.tabBarItem.image = [UIImage imageNamed:@"My_Icon"];
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.view = splitView.view;
}

- (void)viewDidUnload
{
    [super viewDidUnload];

    self.splitView = nil;
    self.leftView = nil;
    self.rightView = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

@end

Следующее, что я сделал, было создание класса UITableViewController для leftView и класса UIViewController для rightView.

Наконец, я связал IBOutlets с соответствующими компонентами и попытался запустить его. Однако, когда я запускаю приложение, все видит черный экран, на котором я ожидаю увидеть UISplitViewController.

На данный момент я полностью озадачен, поэтому любая помощь будет очень признательна.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Если быть более точным, я следовал этому учебнику до раздела ' Создание нашей модели ', где я остановился, потому что UISplitView не отображался.

Ответы [ 2 ]

3 голосов
/ 23 марта 2012
2 голосов
/ 23 января 2013

Я знаю, что это ответ, но я недавно решил это в iOS6.Я попытался реализовать IntelligentSplitViewController, но не смог заставить его работать все время - возможно, потому что я ориентировался на iOS6.В основном мое решение включало создание подклассов UISplitViewController и UITabBarController и обработку событий вращения.Я подробно излагаю свое решение в этом блоге .Надеюсь, это поможет.

...