2011-05-07 27 views
2

我試圖展示UIToolBar在UISplitView應用RootView,代碼如下:UIToolbar在UISplitView應用

self.navigationController.toolbarHidden = NO; 
UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] 
           initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh 
                 target:self 
                 action:@selector(refresh:)];  
self.toolbarItems = [NSArray arrayWithObjects:refreshItem, nil]; 
[refreshItem release];  

不過,我看到的是:

enter image description here

頂部有黑條(我不知道這是從哪裏來的,我不需要這個)還有底部的酒吧,有沒有辦法調整它?

我想要的是讓這樣的事情: enter image description here

+0

您發佈的代碼看起來沒問題。問題可能與工具欄無關。表格視圖和導航欄以及工具欄之間的頂部和底部似乎都有差距。你可以發佈你設置和設置表格視圖大小的代碼,或者你設置分割視圖控制器,導航控制器和根視圖控制器的代碼嗎?問題可能在那裏。 – 2011-05-08 06:49:09

+0

我使用自己的模板直接設置了UISplitView控制器 – adit 2011-05-08 12:50:56

+0

如何設置表格視圖?它看起來像表視圖的框架和導航欄和工具欄之間存在差距。我只是猜測。無論如何,原諒重複,但您發佈的工具欄代碼看起來很好。 – 2011-05-09 02:04:36

回答

2

使用這樣的事情,你可以一個欄按鈕項添加到控制器的頂部:

UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)]; 
self.navigationItem.leftBarButtonItem = refreshItem; 
[refreshItem release]; 

你會讓按鈕會出現在主視圖控制器的標題欄中,正如它的意思。

如果你想使按鈕顯示在導航控制器,你可以嘗試使用這種方法的底部,而不是:

UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)]; 
[self setToolbarItems:[NSArray arrayWithObjects:refreshItem, nil animated:YES]]; 
[self.navigationController setToolbarHidden:NO]; //optional, don't remember if it's required ... 
[refreshItem release]; 

對於這段代碼工作正確的側控制器必須是一個UINavigationController,否則你將無法創建和處理工具欄。我在一個乾淨的項目中嘗試了這種方法,並且工具欄呈現完美。

+0

不是真的......我想要的是refreshItem現在出現,但是我想消除頂部黑色條並將底部條調整到合適的大小 – adit 2011-05-08 13:09:46

+0

可能您可以創建一個自定義UIToolbar對象並將其作爲子視圖添加到側控制器。 – marzapower 2011-05-08 16:05:52

+0

嗯..你能給我一個代碼示例如何做到這一點?我很困惑如何將其添加到底部 – adit 2011-05-08 16:57:49

0

最安全和最簡單的解決方案是設置UINavigationController以在Interface Builder中顯示工具欄和導航欄。

如果它在IB中看起來如預期的那樣,它在運行時很可能不會改變。

如果工具欄是要顯示/隱藏的導航,你應該添加鱈魚這樣做的viewWillAppear:八方通調用超級實施,或意想不到的事情發生可能時。像這樣的東西往往會提供最好的結果一致的方式:

-(void)viewWillAppear:(BOOL)animated; 
{ 
    [super viewWillApplear:animated]; 
    [self.navigationController setToolbarHidden:NO 
             animated:animated]; 
} 

還要確保顯示/隱藏viewWillAppear:工具欄所需要的量在最佳效果的導航堆棧的所有視圖控制器。

1

我有同樣的問題,並就修好了,由於移動代碼出Viewdid負載,降下頁,

正如我以前曾放於

- (UIBarButtonItem *)barButtonItem { 

移動代碼你曾經在那,工作,解決了該問題

斯圖爾特

1

只是注意了別人誰在這個問題絆倒。我有和adit一樣的問題。結果問題是我正在設置並取消隱藏viewDidLoad方法中的工具欄,而不是使用viewWillAppear方法。這些差距是由視圖知道它在橫向模式下顯示之前設置工具欄引起的。