我有問題嘗試從ios應用操縱導航堆棧。或者至少是因爲這種操縱的行爲。ios導航堆棧操作
我的情況:
我有3個ViewControllers。
控制器一個示出了多個級別, 控制器b是gameview 控制器C是某種得分
顯然我將選擇在控制器中的一個電平,這將觸發一個SEGUE到控制器B,一旦水平是完成對控制器的不合格賽格。每一次都是推動。
現在一旦我在控制器c我不希望能夠回到b使用後退按鈕。我想回到控制器a。爲了這個工作,我從堆棧中刪除了控制器,所以不會移動到控制器b。這工作正常。
im面臨的問題是,控制器a上顯示的後退按鈕,看起來不應該有任何迴應。如果我點擊後退按鈕,應用程序不會崩潰,按鈕就會消失,離開標題。
我嘗試添加:
NSArray* controllers = [self.navigationController viewControllers];
if ([controllers count]<=1) {
[self.navigationItem setHidesBackButton:YES animated:YES];
} else {
[self.navigationItem setHidesBackButton:NO animated:YES];
}
[super viewDidAppear:animated];
在一些相對計算器文章建議,但沒有成功。除此之外,這看起來不像ios創建Storyboard中的那些按鈕,而實際上並沒有添加它們,但是當它們不再需要時,它們不會刪除它們。這給我留下了一些選擇。
- 任我認爲,IOS是聰明比它實際上是
- 我缺少一些重要的更新導航欄
- 我去這一切都錯了
besdies即時通訊使用此代碼剪斷從控制器b切換到c。
[self performSegueWithIdentifier:@"feedbackSegue" sender:self];
[self removeFromParentViewController];
任何有關缺失操作或一般不良做法的提示都將不勝感激。
更新
經過進一步調查,它不只是後退按鈕,它的整個導航欄即關。它的行爲就像刪除的控制器仍然在那裏一樣。 BackButton在右端有另一個uiActionButton。
導航欄是否將其狀態存儲到不同的堆棧上,而不是視圖控制器?如果是這種情況,我可以從這個堆棧中移除該狀態,以保持一致。
這是我在做什麼,導致了同樣的問題。問題是我實際上回到了控制器b。它的控制器仍然顯示回來,即使無處可返回 –
嗯,我沒有任何問題,一定要將它添加在viewDidAppear雖然。 – streem
我在viewdidload中做了完全相同的事情。我不太清楚爲什麼它有所作爲,你是否刪除了以前的視圖控制器在didload或didappear(你可以點亮一些?),但它顯然是有區別的。謝謝。 –