2

我有一個小問題,定位問題,開展我在景觀SPLITVIEW時,上面有我的左視圖控制器一個黑色的小空間: alt text在左視圖uisplitviewcontroller

我的iPad旋轉爲縱向和切回後景觀,空間已經消失。

,如果我直接加載到的UITableViewController左視圖,而不是在一個navigationcontroller,它工作正常: alt text

任何想法,爲什麼發生這種情況?

// Produkte 
    self.produkteMainTableVC = [[produkteMainTableViewController alloc] initWithStyle:UITableViewStylePlain]; 
    UINavigationController *produkteMainNavigationController = [[UINavigationController alloc] initWithRootViewController:self.produkteMainTableVC]; 
    self.produkteDetailVC = [[produkteDetailViewController alloc] initWithNibName:@"produkteDetailViewController" bundle:nil]; 
    self.produkteSplitVC = [[UISplitViewController alloc] init]; 

    self.produkteSplitVC.delegate = self.produkteDetailVC; 
    self.produkteMainTableVC.produkteDetailVC = produkteDetailVC; 
    [self.produkteSplitVC setViewControllers:[NSArray arrayWithObjects:produkteMainNavigationController,self.produkteDetailVC,nil]]; 

感謝您的幫助!

編輯: 它正好20像狀態欄。這有助於任何人嗎?

EDIT2:

做這樣的事情:

if(self.navigationController.navigationBar.frame.origin.y >= 20.0) { 

     self.navigationController.navigationBar.frame = CGRectMake(self.navigationController.navigationBar.frame.origin.x, 0.0, self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height); 
    } 

結果: alt text

有點起色,我會說。但我不知道如何將我的tableview粘貼在導航欄下方。

+0

你有沒有最終的解決方案? – TomSwift 2011-04-12 03:54:35

+0

沒有。決定使用不帶tabbar的分割視圖,並修改了我的導航概念 – choise 2011-04-12 10:29:54

+0

我想出了一種實現此目的的方法;看到我的答案,下面。技巧是不使用標準的UITabViewController,而是創建自己的。因爲UITabViewController相當簡單,所以很容易。 – TomSwift 2011-04-12 16:48:44

回答

0

UINavigationController有一個討厭的習慣,把它的內容向下移動20px,具體取決於你放置它的位置。我猜它是在這裏做的,因爲你的分割視圖控制器是在一個TabBar控制器內,而Apple沒有祝福這種類型的安排。

+0

但它的工作;)你認爲蘋果會批准這個?不知道有沒有這樣的應用。你有一個想法如何避免這種特殊的行爲? – choise 2010-12-14 15:37:14

+0

如果你能弄清楚如何克服20px的問題,它可能會被批准。雖然我試圖在不同的情況下這樣做,但放棄了。 – Brian 2010-12-14 15:47:59

+0

你能檢查我的第二個編輯嗎?可能你有一個想法。 – choise 2010-12-14 16:45:53

0

我遇到了同樣的問題,沒有解決。我注意到的唯一的事情是,當主設備不包含UINavigationController作爲它的根時,這不會發生。

任何人都可以解決這個問題嗎?

0

這是我做的,它似乎工作正常。

我創建了自己的自定義選項卡視圖控制器,源自UIViewController。在viewDidLoad我添加一個UITabBar到視圖的底部並將代理設置爲我自己,以便我可以處理選項卡更改。 (我將UITabBar作爲rotatingFooterView返回)選項卡更改導致交換當前視圖控制器,就像真正的UITabBarController一樣。當交換視圖控制器(有時是UISplitViewController,在主視圖中託管UINavigationController)時,我在視圖內添加並定位了視圖控制器的視圖,位於UITabBar之上。我還小心地將viewWill/DidAppear/Disappear調用轉發給當前的視圖控制器,以及每個will/didRotate消息。

+1

你有沒有類似於我們分享的示例項目? – choise 2011-04-12 19:22:11

3

我知道這是一個很古老的話題,但也許它會幫助其他人...

我有同樣的問題(有相同的配置:SPLITVIEW中的TabBar)。 該屬性解決了它!

[self.splitViewController setWantsFullScreenLayout:YES]; 
+0

感謝您的評論。當然,它可能會幫助一些人! – choise 2012-12-20 14:31:29

+0

@Funyafunya我就像在這個問題上發瘋一樣,我差點撞牆。但是,你遲到的評論肯定在這一刻保存了我的權利。從現在開始,即使太晚,我也會始終發佈我的正確的已知解決方案/體驗:)感謝哥們。 – Humayun 2013-01-14 19:22:38

+0

向SO問題添加內容永遠不會太晚。你不只是回答OP的問題,你正在回答數百名未來遇到此線程的其他開發人員的問題。那謝謝啦! – Dermot 2013-12-01 01:32:26

0

似乎是從iOS 7.0發生此問題。在某些情況下設置UINavigationBar的幀不起作用。我認爲這是可以解決你的問題:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { 
     self.navigationController.view.frame = CGRectMake(0, -20, self.navigationController.view.frame.size.width, 
                  self.navigationController.view.frame.size.height); 
    } 

此代碼應(在- (void)viewDidLoad例如)只能調用一次。 在我的情況下,它適用於所有設備方向。

相關問題