从@selector隐藏UINavigationBar

时间:2015-03-10 09:02:06

标签: c# ios xcode

我有一个简单的WebView应用程序。在其中一个案例中,我显示了一个文件,允许用户返回显示UINavigationBar

navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 20, 320, 44)];
navigationItem = [[UINavigationItem alloc] init];

navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back"
                                                style:UIBarButtonItemStyleBordered
                                                target:self
                                                action:@selector(buttonClicked:)];;

[navigationBar pushNavigationItem:navigationItem animated:YES];
[self.view addSubview:navigationBar];

这很好用。它显示一个后退按钮,当单击后退按钮时,它会执行选择器(必须改进按钮样式,但我是xCodec#的新手,这将在稍后出现。

在选择器中我加载了上一个网址,但我无法弄清楚如何隐藏按钮和条形图。

- (IBAction) buttonClicked:(id)sender {
    return [self.webView loadRequest:[[NSURLRequest alloc] initWithURL:[NSURL URLWithString: lastURL]]];
}

我尝试了几件事,比如removeFromSuperView

[navigationBar removeFromSuperview];

隐藏它:

[self.navigationController setNavigationBarHidden:YES animated:YES];
self.navigationController.navigationBar.hidden = YES;

// or

[navigationItem hidesBackButton];

// or

navigationBar.hidden = TRUE;

使用选择器(id)

[sender show:NO];

使用alpha属性:

navigationBar.alpha = 0,0;

可用内存空间:

navigationItem.dealloc;

但没有任何作用......我想我错过了一些重要细节,因为我不知道xCode是如何运作的......

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

就个人而言,我永远不会添加这样的导航栏,而是拥有一个根导航控制器,它有一个根视图控制器,可以在视图中保存webview。

你没说清楚,你怎么实际显示文件?

无论如何,这段代码:

[self.navigationController setNavigationBarHidden:YES animated:YES];

不适合您,因为您没有为视图控制器提供导航控制器。

在主故事板中提供一个,也许是最好的,并将您的视图控制器(包含webview)设置为其根视图控制器。为此,打开故事板,将UINavigationController拖放到主区域。您必须勾选“是初始视图控制器”选项。 注意:执行拖放操作时,已经提供了默认的根视图控制器。如果你已经在故事板中有一个,你可以离开那个,或者提供你自己的。为此,删除链接的一个,然后按住Ctrl并单击并从导航控制器拖动到视图控制器,将其设置为其根视图控制器。我附上了一张图片来展示我所描述的内容。

Main storyboard setup