2009-10-03 77 views
0

我有一個「didSelectRowAtIndexPath」操作,它添加了一個導航欄並顯示一個新視圖。新視圖中有一個操作會將另一個視圖推送到導航堆棧上,並且可以正常工作,但單擊「後退」不會恢復以前的視圖。UINavigationItem返回按鈕返回到上一個導航項,但視圖不更改

序列基本上是:

  • 用戶點擊表格單元
  • 導航欄出現,與它下面的新視圖,示出一些HTML的鏈接
  • 用戶點擊一個鏈接和新的視圖被添加到NAV,伴隨着後退按鈕
  • 用戶點擊返回按鈕,NAV回滾正常,但視圖不會更改

新視圖是通過捕獲鏈接上的點擊添加的,如下所示:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { 
if(navigationType == UIWebViewNavigationTypeLinkClicked) { 
    UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"webpage"]; 
    [flipsideNavigationBar pushNavigationItem:navigationItem animated:YES]; 
    [navigationItem release]; 

    WebViewController *viewController = [[WebViewController alloc] initWithNibName:@"webView" bundle:nil]; 
    UIView *webPageView = self.webViewController.view; 
    [webPageView addSubview:viewController.view]; 
    [webPageView insertSubview:flipsideNavigationBar aboveSubview:viewController.view]; 
    [[viewController.view.subviews objectAtIndex:1] loadRequest:request]; 
    [webView stopLoading]; 
    return YES; 
} 
return YES; 
} 

我不確定我在做什麼錯;應該發生什麼是「後退」按鈕應該關閉當前視圖並返回到前一個視圖。任何人都可以提出任何建議嗎?

謝謝!

約翰

回答

0

推薦的方法做,這是隻使用一個UINavigationController,推動UIViewController小號到堆棧中,無論是模式還是非模式。

如果您希望繼續使用您的自定義解決方案,您應該爲您的UINavigationBar一個delegate並執行其shouldPopItem:didPopItem:方法。 Documentation link

+0

感謝您的好消息。它需要一點重寫,但現在它工作。 – John 2009-10-04 03:38:20