簡體   English   中英

UINavigationController后退按鈕問題

[英]UINavigationController back button problem

你好,

我有一個具有UITabBarController和5個選項卡的混合iPhone應用程序。 每個選項卡都包含一個UINavigationViewController,該UINavigationViewController用一個根控制器初始化,該根控制器是一個UIViewController,它承載一個UIWebView。 在某個特定的鏈接上,我按下了導航控制器中固有的UITableViewController(該UITableViewController顯示了本地存儲的一些數據)並具有一個后退按鈕。 以下是我解析shouldStartLoadWithRequest:方法中的URL字符串后的代碼。

    UINavigationController *navControl = (UINavigationController *)self.parentViewController;
    CartTableViewController *tabView = [[CartTableViewController alloc] init];
    [navControl pushViewController:tabView animated:YES];
    navControl.navigationBar.hidden = NO;
    return YES;

這很好。 解析特定的鏈接,並將表視圖推送到navigationStack上。 當我單擊后退按鈕時(是的,它顯示的是“后退”,而不是前一個視圖的名稱,即“新聞”),但我得到了另一個表格視圖,但是這次后退按鈕被命名為“新聞”。 當我單擊它時,我回到我的rootcontroller。 我似乎找不到從哪里將兩個視圖推到根視圖之上的堆棧。

謝謝。 扎基

您對webView:shouldStartLoadWithRequest:navigationType的實現可能被調用了兩次。 一種解決方案是僅在UINavigationController堆棧上還沒有實例時創建並推送CartTableViewController的實例。

if (![navControl.topViewController isKindOfClass:[CartTableViewController class]]) {
    CartTableViewController *tabView = [[[CartTableViewController alloc] init] autorelease];
    [navControl pushViewController:tabView animated:YES];
    navControl.navigationBar.hidden = NO;
}

您還應該釋放您的tabView實例。

好吧,我發現了問題。 我需要從shouldStartLoadWithRequest返回NO: 抱歉打擾了

暫無
暫無

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

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