【问题标题】:UINavigationItem back button returns to previous navigationitem, but view doesn't changeUINavigationItem 后退按钮返回到上一个导航项,但视图没有改变
【发布时间】:2009-10-03 23:23:47
【问题描述】:

我有一个添加导航栏并显示新视图的“didSelectRowAtIndexPath”操作。新视图中有一个动作将另一个视图推送到导航堆栈上,它可以工作,但单击“返回”不会恢复以前的视图。

顺序基本上是:

  • 用户点击表格单元格
  • 出现导航栏,下方有新视图,显示一些带有链接的 html
  • 用户点击一个链接,新视图和一个后退按钮被添加到导航中
  • 用户点击后退按钮,导航正确回滚,但视图没有改变

通过捕获对链接的点击来添加新视图,如下所示:

- (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;
}

我不确定我做错了什么;应该发生的是“后退”按钮应该关闭当前视图并返回到前一个视图。任何人都可以建议任何尝试吗?

谢谢!

约翰

【问题讨论】:

    标签: objective-c iphone uinavigationitem


    【解决方案1】:

    推荐的方法是使用UINavigationController 并将UIViewControllers 压入堆栈,无论是模态的还是非模态的。

    如果您希望坚持使用您的自定义解决方案,您应该为您的UINavigationBar 设置一个delegate 并实现其shouldPopItem: 或didPopItem: 方法。 Documentation link

    【讨论】:

    • 感谢您提供的好信息。它需要进行一些重写,但现在它可以工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多