簡體   English   中英

按下視圖后,導航欄上的“后退”按鈕被禁用

[英]“Back” button on Navigation Bar is disabled after view push

我正在通過表視圖的委托類MyClass推送視圖控制器( DetailView )。 MyClass充當MasterView的表視圖的委托。 我試圖從MyClass的“ didSelectRowAtIndexPath:”方法中推送DetailView ,但每次按下DetailView都將禁用導致返回MasterView的后退按鈕。

我的推視圖的代碼:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

if (!detailViewController) {
    detailViewController = [[DetailViewController alloc] init];
}

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.navigationController pushViewController:detailViewController animated:YES];

}

代替[appDelegate.navigationController pushViewController:detailViewController animated:YES]; ,請使用[self.navigationController pushViewController:detailViewController animated:YES];

聽起來appDelegate的nav控制器是與MasterView的實例不同的實例,這可以解釋奇怪的行為。

使用self.navigationController將另一個視圖控制器推入MasterView導航控制器堆棧的頂部。

聽起來您需要將推回您的MasterView。

您可以通過以下方式來做到這一點:在MyClass中設置一個協議,然后使用通知中心(通過多個視圖將其從MyClass委托到MasterView進行推回調用,從而產生一種奇怪的來回委派模式)。知道此推送正在發生),或者在初始化MyClass並將其用於推送時傳遞對MasterView的引用。

無論您選擇什么,嘗試使用AppDelegate的nav控制器肯定會給您帶來奇怪的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM