2012-10-09 26 views
1

我潛入iOS開發手動創建一個拆分視圖佈局,我試圖創建一個使用拆分視圖佈局的iPad應用程序,而無需使用UISplitViewController。我發現this question已經發布,但它對於我目前的iOS體驗級別來說幫助過於模糊。不使用UISplitViewController

總之,我有一個UIViewController類名爲MySplitViewController包含兩個孩子觀看控制器,一個用於主視圖,一個用於詳細視圖。我試圖通過一種方式實現這一點,當我將MySplitViewController的實例推送到導航堆棧時,我在左側獲得了一個表視圖(主控),在左側獲得了一個詳細視圖。但是,當我運行我的代碼時,整個拆分視圖會填充表視圖。我如何手動創建分割視圖佈局?下面是我的三個視圖控制器類,他們是很簡單的...

MySplitViewController.m

#import "MySplitViewController.h" 
#import "MasterViewController.h" 
#import "DetailViewController.h" 

@interface MYSplitViewController(){} 

@property (nonatomic, strong) MasterViewController *masterViewController; 
@property (nonatomic, strong) DetailViewController *detailViewController; 

@end 

@implementation MySplitViewController 

- (id)initWithCoder:(NSCoder *)aDecoder{ 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     self.masterViewController = [[MasterViewController alloc] initWithNibName:nil bundle:nil]; 
     self.detailViewController = [[DetailViewController alloc] initWithNibName:nil bundle:nil]; 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.view.frame = CGRectMake(0, 0, 768, 1004); 
    [self.view addSubview:self.masterViewController.view]; 
    [self.masterViewController viewDidLoad]; 
    [self.view addSubview:self.detailViewController.view]; 
    [self.detailViewController viewDidLoad]; 
} 

@end 

MasterViewController.m

#import "MasterViewController.h" 

@interface MasterViewController() 

@end 

@implementation MasterViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
    } 
    return self; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UITableView *table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 100, 1004) style:UITableViewStylePlain]; 
    table.dataSource = self; 
    table.delegate = self; 
    [self.view addSubview:table]; 
} 

@end 

DetailViewController.m

#import "DetailViewController.h" 

@interface DetailViewController() 

@end 

@implementation DetailViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
    } 
    return self; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIView *uiview = [[UIView alloc] initWithFrame:CGRectMake(100, 0, 668, 1004)]; 
    [self.view addSubview:uiview]; 
} 

@end 

我不理解什麼?

感謝這麼多提前爲你的智慧!

P.S.值得注意的是爲什麼我沒有使用UISplitViewController。我的應用程序目前設計爲使得根視圖不是分割視圖。我的應用程序的根視圖將導致分割視圖被推送到導航堆棧。這裏的問題是,UISplitViewController被設計爲一個應用程序的根視圖和蘋果的文檔明確說,如果你使用UISplitViewController,它需要是根視圖。因此,我正在實施我自己的拆分視圖並手動管理視圖。

+1

我明白現在好你的另一個問題:) – Daniel

回答

1

也許想顯示以不同的方式可以幫助你的根視圖。例如:使用UISplitViewController作爲根視圖,並在當前的根視圖上顯示一個模態視圖。所以你使用你當前的根視圖和UISplitViewController

+0

這是一個有趣的方法,謝謝Pfitz!過渡動畫是怎麼回事?如果我將當前的根視圖呈現爲模式視圖,那麼是否可以使用看起來像將分割視圖壓入堆棧的動畫將動畫過渡到分割視圖(實際根視圖)? – BeachRunnerFred

+0

沒有使用這種技術與非標準的動畫,但我認爲這是可能的通過視圖控制器的'modalTransitionStyle'屬性 – Pfitz

1

你可能會想嘗試也是基於對UIViewController的MGSplitViewController ..並允許推.. MGSplitViewController

+0

感謝AppleDelegate!價格(199美元)有點超出我的範圍,但是,我的應用程序需要非歸屬許可。我目前的做法有什麼祕訣,我做錯了? – BeachRunnerFred

相關問題