2012-12-07 59 views
0

我想創建一個應用程序,而不使用花哨的iOS導航欄。什麼是在全屏幕之間切換的最佳或最正確的方法?基於iOS的非導航欄導航和視圖交換

所以說我從「家」開始,我想在不使用導航欄的情況下進入「登錄」 - 我該怎麼辦?我應該改變rootViewController嗎?當我交換新視圖時,我如何確保舊視圖完全釋放?我想用ARC想象一下,如果沒有引用它只會消失?並且在ARC之前,我必須將所有內容都設置爲null?

或者是隱藏導航欄並使用其堆棧的正確方法?

謝謝!

+0

你想要一個堆棧?你想動畫控制器之間的轉換嗎?如果您使用具有隱藏導航欄的導航控制器,那麼當您推入新的控制器時,舊的控制器將保留在堆棧上 – rdelmar

回答

2

使用正常UINavigationController並將導航欄設置爲隱藏。很容易。

1

如果您不想使用堆棧,則不能使用默認的帶有默認塞格的UINavigationController。如果您希望釋放目標背後的所有視圖,則必須從目標屏幕上將其從堆棧中移除。

我的答案是把一切都在一個導航控制器,設置欄隱藏(self.navigationController.navigationBarHidden = YES;),並創建一個覆蓋perform方法像這樣的定製賽格瑞:

- (void) perform { 
    UIViewController* destination = self.destinationViewController; 
    NSArray* newStack = [NSArray arrayWithObject:destination]; 
    UIViewController* source = self.sourceViewController; 
    [source.navigationController setViewControllers: newStack animated: YES]; 
} 

然後,線材一切像正常,並讓你的自定義類的賽段。這樣,任何時候你繼續堆棧將被清除除了新顯示的控制器之外的所有內容。

編輯:我猜你編輯說明你想使用該堆棧,而我寫這個。好吧。在這種情況下,是的,只需將欄設置爲隱藏並像普通一樣使用即可。