1

導航控制器上的後退按鈕有時不會出現。請注意,有時候它確實如此,所以其他地方的som代碼中可能還有其他的東西,但我試圖以我能想到的方式進行調試,似乎沒有任何工作。後退按鈕 - 不能調試

用於推動視圖控制器的代碼如下(非常標準):

CommentsTableViewController *vc = [[[CommentsTableViewController alloc] init] autorelease]; 
vc.puzzleID = self.puzzleModel.puzzleID; 
[self.navigationController pushViewController:vc animated:YES]; 

要調試這個問題,我已經把在CommentsTableViewController在viewWillAppear中和viewDidAppear(以下代碼除我只註冊爲觀察員一次):

self.navigationItem.hidesBackButton = NO; 

[self.navigationItem addObserver:self forKeyPath:@"backBarButtonItem" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial) context:nil]; 

self.navigationItem.backBarButtonItem.title = @"Tactic"; 
NSArray *viewControllerArray = [self.navigationController viewControllers]; 
int parentViewControllerIndex = [viewControllerArray count] - 2; 
[[viewControllerArray objectAtIndex:parentViewControllerIndex] setTitle:@"Tactic"]; 

這似乎沒有任何幫助。放入斷點後,似乎在層次結構上方的視圖控制器中有一個標題(@「Tactic」),而hBackButton已經是NO。 backBarButtonItem屬性是零,並始終爲零,但我認爲這是預期的行爲,即使你有一個backBarButtonItem?

編輯:在父控制器,我在第一設定hidesBackBackButton爲YES,再後來(I推下一個控制器上之前),將其設置回NO。當我刪除這些行時,新的視圖控制器有一個後退按鈕。爲什麼一個視圖控制器的導航項會影響下一個導航項?

歡迎任何建議或想法。非常感謝。

+0

導航控制器是窗口的根視圖控制器嗎? –

+0

@RamyAlZuhouri是的。它是。 – plivesey

+0

我也讀過(從另一個StackOverflow的問題,所以不知道這是否正確),你應該設置hidesBackBackButton,然後再推新視圖控制器。但是,我在應用程序中的許多其他位置執行此操作,並且沒有任何問題。 如果是這樣,是否有另一種方法呢? – plivesey

回答

0

確定。我已經完成了。我不知道爲什麼這會有所作爲,但確實如此。

在同一個運行的循環,我打電話hidesBackButton,我也呼籲:

[self.view addSubview:self.chessBoardViewController.view]; 

這似乎是,不知何故被擰緊了的導航欄就行了。如果我刪除這條線,它完美的作品。

[self.view performSelector:@selector(addSubview:) withObject:self.chessBoardViewController.view afterDelay:0]; 

我不」知道爲什麼這個工作,因此,如果任何人有什麼可能發生的任何見解,請評論:所以我找到了解決方案與替代這一行。

+0

我應該看到整個代碼才能知道爲什麼這會起作用。如果你知道它爲什麼起作用非常重要,請發佈項目。 –

1

或許你會解決調試它的問題better.You假設,導致你後面的按鈕是這樣的:

self.navigationItem.backBarButtonItem.title = @"Tactic"; 

但是,這是零,如果你想找到該按鈕的外觀在導航控制器導航酒吧:

NSLog(@"%@",self.navigationController.navigationBar.topItem); 

我不明白了一個道理,爲什麼你的代碼不能正常工作,你也並不需要這麼做:

self.navigationItem.hidesBackButton = NO; 

試試這個:

self.navigationController.navigationBar.topItem.hidesBackButton = NO; 

反正這對我的作品,即使我不將它設置爲NO。

如果這不能解決問題,應該幫助至少調試它,如果你仍然有問題後在評論,說那有什麼的NSLog()打印。

+0

是的,你說得對。我不認爲這self.navigationItem.backBarButtonItem.title = @「戰術」;根本沒有任何區別。我只是把它包括來突出我已經嘗試過的東西。 – plivesey

+0

我打印出來self.navigationController.navigationBar.topItem,它是相同的對象self.navigationItem 對於這兩種的NSLog是「」 – plivesey

+0

經過進一步調查,這似乎是它的一個問題與我除去後退按鈕,然後將其放回。如果刪除這些行,它可以正常工作。 所以也許一種新的方式來表達我的問題:我如何正確地臨時隱藏UIViewController的後退按鈕? – plivesey