2013-01-24 45 views
0

我在UINavigationController中有兩個UIViewController s。最頂端有hidesBottomBarWhenPushed設置爲YES。當我推動最上面的UIViewController時,其UITableView被推送到應該在的位置上方約20px(注意推送的視圖控制器的頂部與單元之間的單元高度的差異)。UIViewController hidesBottomBarWhenPushed在推/流行動畫過程中將UIView放在錯誤的地方

Push UIViewController, Hide UIToolBar

比較在細胞位置在下面的截圖:

Pushed UIViewController, Hidden UIToolBar

此外,當我彈出最上面的UIViewController,其UITableView推約20像素的下面,它應該是(公告UITableView以上的額外深藍色空間)。

enter image description here

我已經試過我的移動電話-[UIViewController setHidesBottomBarWhenPushed:YES]-[UIViewController loadView]-[UIViewController viewWillAppear:]-[UIViewController viewDidAppear:]。這些回調都爲時已晚,因爲UIViewController已被推送,因此UIToolbar未被隱藏。

有什麼辦法可以避免這些差距?目前,我在我最上面的UIViewController-[UIViewController viewDidAppear:]-[UINavigationController setToolbarHidden:NO animated:NO]中呼叫-[UINavigationController setToolbarHidden:YES animated:NO],在我最下面的UIViewController-[UIViewController viewDidAppear:]中。這並不理想。

+1

這些截圖看起來很熟悉。我想我們在Renaissance.io坐在一起。應該介紹一下我自己。 –

回答

0

比方說AB。從你的描述來看,這聽起來像B不應該知道,無論呈現它有一個工具欄。相反,當A推B時,A知道B不應該有A的工具欄。那麼,爲什麼你在初始化B時不會設置它呢?

BController *b = [[BController alloc] init]; 
b.hidesBottomBarWhenPushed = YES; 
[self.navigationController pushViewController:b animated:YES]; 

或者,如果你認爲B則需要控制這種行爲,你可以把它放在B的init方法。

+0

我確實把它放在B的init方法中。只要在推送之前調用hidesBottBarWhenPushed,就會發生這種行爲。 –