当我返回到iOS中的视图时隐藏导航栏

时间:2013-04-23 11:32:28

标签: iphone ios uinavigationcontroller

我是iPhone开发的新手。我使用故事板创建了一个使用导航栏的应用。我的问题是我在按钮点击时从viewA以编程方式打开 viewB 并成功。现在回到 viewA 我使用了取消按钮。当我点击取消按钮(上一个)时,( viewA )打开但导航栏未显示。和viewA有导航栏控件但 viewB 没有。

提前致谢

查看A

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    EditViewController *viewController = (EditViewController *)[storyboard instantiateViewControllerWithIdentifier:@"EditViewController"];

    [self presentViewController:viewController animated:NO completion:NULL];

查看B:

- (IBAction)cancelButtonPressed:(id)sender {
    if ( lables != NULL) {

        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        ScannerViewController *viewController = (ScannerViewController *)[storyboard instantiateViewControllerWithIdentifier:@"ScannerViewController"];

        [self presentViewController:viewController animated:NO completion:NULL];

    }
    else{

        [self.navigationController popViewControllerAnimated:YES];
    }

5 个答案:

答案 0 :(得分:5)

您正在展示viewB&使用self.navigationController弹出它,你应该使用一种方法,使用presentviewcontroller& dismissviewcontroller。

[self dismissViewControllerAnimated:YES completion:nil];

对于您的方案,最好使用UINavigationController

e.g

<强>推

[self.navigationController pushViewController:viewController animated:YES];

<强>合

[self.navigationController popViewControllerAnimated:YES];

答案 1 :(得分:0)

你必须使用导航控制器,在你的StoryBoard中选择你的视图A,编辑菜单&gt;嵌入&gt;导航控制器。

http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html

答案 2 :(得分:0)

如果您使用的是storyboard,则无需以编程方式显示viewController。按住ctrl,从viewCA拖动到viewCB,然后从弹出菜单中选择模型。

解雇viewController

[self dismissViewControllerAnimated:YES completion:nil];

如果要向viewCB发送任何数据,请给出segue标识符(例如“segid”)

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"segid"])
    {
        //write your code here.
    }
}

在展示(推送)delegate时会自动调用此方法(viewController)。

答案 3 :(得分:0)

我也遇到了同样的问题。解决方案是永远不要在后退按钮上单击时选择模态,因为模态覆盖了整个视图,这就是为什么在后面的屏幕上导航控制器没有显示。因此,不要为后退按钮建立连接,只需编写后退按钮的代码。

[self dismissViewControllerAnimated:YES completion:nil];

答案 4 :(得分:-1)

当您需要(例如viewDidAppear方法)时,使用

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