2014-02-13 81 views
0

我正在尋找一種方法來獲取PopoverController中的SplitViewController。 (Popover with Splitview inside與MGSplitViewController裏面的彈出式窗口 - 方向問題

現在我得到了使用MGSplitViewController的這項工作,但我有這樣的問題,根據方向的佈局。

當我設置

showsMasterInPortrait = YES; 

它看起來像:http://i.stack.imgur.com/Bd31R.png

2.當我設置

showsMasterInLandscape = YES; 

它看起來像:http://i.stack.imgur.com/oWCSp.png

我的目標是擁有一個SplitView with Master |細節部分(如情況1中)細節將其內容擴展爲與彈出窗口控制器寬度相同的寬度。

這裏是我的代碼:

MGSplitViewController *customSplitVC = [[MGSplitViewController alloc] init]; 

customSplitVC.showsMasterInPortrait = YES; 
customSplitVC.view.backgroundColor = [UIColor whiteColor]; 
[customSplitVC setSplitPosition:400 animated:YES]; 

DetailViewController *detailViewController = (DetailViewController*)[storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"]; 
detailViewController.title = @"Detail"; 

ListViewController *listViewController = [[ListViewController alloc] initWithDetailViewController:detailViewController]; 
listViewController.title = @"Master"; 
listViewController.content = self.myContent; 

UINavigationController *detaillNC = [[UINavigationController alloc] initWithRootViewController:detailViewController]; 

listViewController.detailViewController = detailViewController; 

UINavigationController *masterNC = [[UINavigationController alloc] initWithRootViewController:listViewController]; 
customSplitVC.viewControllers = [NSArray arrayWithObjects:masterNC, detaillNC, nil]; 
customSplitVC.delegate = detailViewController; 

UINavigationController *customSplitNC = [[UINavigationController alloc] initWithRootViewController:customSplitVC]; 

UIBarButtonItem *btnCancel = [[UIBarButtonItem alloc] initWithTitle:@"X" style:UIBarButtonItemStyleDone target:self action:@selector(dismissPopover)]; 
customSplitVC.navigationItem.rightBarButtonItem = btnCancel; 

self.popover = [[UIPopoverController alloc] initWithContentViewController:customSplitNC]; 
self.popover.delegate = self; 
self.popover.popoverContentSize = CGSizeMake(1000, 500); 

CGRect rect = CGRectMake(self.view.frame.size.width/2, self.view.frame.size.height/2, 1, 1); 

[self.popover presentPopoverFromRect:rect inView:self.view permittedArrowDirections:0 animated:NO]; 

感謝您的幫助

+0

如果有人正在考慮使用MGSplitViewController,或者已經使用過它並且仍然可以更改,那麼我建議您不要使用它。我曾參與一個使用它的項目,我必須說它是一團糟。整個事情的建立方式是業餘的(我們都經歷過這樣一個難題)。例如,旋轉消息被手動傳遞給主視圖控制器和詳細視圖控制器。如果它們已被添加爲其容器控制器的子視圖控制器,則會自動發生。這只是控制器許多其他缺陷的一個例子。 – pnizzle

回答

0

試試這個:UINavigationController issue in the master view (iOS 6)

的作品,我發現最簡單的方法是添加以下MGSplitViewController.m在 - (void)設置結束時

self.view.autoresizesSubviews = NO;

+0

thx爲您的答覆,但它不適用於我(iOS7)。你使用MGSplitViewController的方向是什麼? – blub

+0

add'[self layoutSubviewsForInterfaceOrientation:toInterfaceOrientation withAnimation:YES];'to'-willRotateToInterfaceOrientation:duration:',它適用於我。 – youger

0

確保將MGSplitViewController實例添加爲windowrootViewController