2011-09-09 71 views
0

如何顯示SplitViewController中的barButtonItem?是不是用splitViewController自動創建的?barButtonItem for splitViewController不顯示在屏幕上?

我創建了一個針對Ipad的projet,我把我的mainViewController作爲控制器視圖放在縱向模式的屏幕上,並且我用它的tableView創建了另一個uiviewController「RootViewController」。

我把兩種方法:

- (void)splitViewController: (UISplitViewController*)svc willHideViewController: 
- (void)splitViewController: (UISplitViewController*)svc willShowViewController: 
在我mainViewController

,例如:

// Called when rotating to a portrait orientation. 
- (void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc 
{ 
    barButtonItem.title = @"Root List"; 
    NSMutableArray *items = [[toolbar items] mutableCopy]; 
    [items insertObject:barButtonItem atIndex:0]; 
    [toolbar setItems:items animated:YES]; 
    [items release]; 
    self.mainPopoverController = pc; 
} 

(mainPopoverC ...坐落在.h文件中:

UIPopoverController * mainPopoverController;

但模擬只顯示barViewButomItem的mainViewController視圖。

有什麼想法?

非常感謝

回答

1

如果您的工具欄中包含任何項目,

[toolbar items] 

爲零,所以你mutableCopy進入深空...

+0

謝謝湯姆,是的,所以同樣的問題實際上,我嘗試了chown的代碼和工具欄似乎是空的:你通常會怎麼做?我用IB設置splitVC,viewController出現,但不是工具欄...不是它自動添加的任何方法,我應該添加到代碼? – Paul

+1

你是自己設置的嗎?我建議你嘗試SplitView模板項目並檢查差異。 detailview在那裏有一個工具欄,它不是自動創建的。 – Tom

+0

你是對的,工具欄被添加到屏幕上......我沒有看到,謝謝,它現在有效!謝謝 – Paul

1

嘗試內willHideViewController是這樣的:

UIBarButtonItem *menuButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Root List" style:UIBarButtonItemStyleBordered target:self action:@selector(showPopover:)]; 
NSMutableArray *items = [[NSMutableArray alloc] initWithArray:toolbar.items]; 
if ([items count]) { 
    [items insertObject:menuButtonItem atIndex:0]; 
    [toolbar setItems:items]; 
} 
[menuButtonItem release]; 
[items release]; 
+0

謝謝,是的,它確實是空的,至少它似乎是空的,因爲沒有出現在屏幕上。你通常會怎麼做?我設置了IB的splitVC,viewController出現,但不是工具欄... – Paul

+0

確保你沒有這樣做:'self.navigationController.navigationBar.hidden = YES;'或'toolbar.hidden = YES;'在' - (void)viewWillAppear:(BOOL)animated'方法中。 – chown

+0

好吧,我不得不把自己的工具欄放在視圖上,我的錯誤。謝謝你的幫助! – Paul