Objective c 按下ViewController时导航栏未正确显示

Objective c 按下ViewController时导航栏未正确显示,objective-c,ios,uinavigationcontroller,Objective C,Ios,Uinavigationcontroller,这个问题很容易用图片来理解。 我有一个UINavigationController,允许用户在视图之间切换 第一个视图包含搜索栏和表视图,如下所示: 第二个是基本视图,其中显示有关单元格的信息 当我单击搜索栏时,导航控制器被隐藏,搜索栏现在位于顶部 现在,如果我单击某个单元格,它将转到第二个视图,但导航栏将首先隐藏,如下所示: 然后,它会自动显示为: 我尝试过一些方法,比如在按下下一个视图控制器之前显示导航栏,但它非常难看。。 是否有人知道如何在第二个视图上直接显示导航栏(如在联系人应用程序

这个问题很容易用图片来理解。 我有一个UINavigationController,允许用户在视图之间切换

第一个视图包含搜索栏和表视图,如下所示:

第二个是基本视图,其中显示有关单元格的信息

当我单击搜索栏时,导航控制器被隐藏,搜索栏现在位于顶部

现在,如果我单击某个单元格,它将转到第二个视图,但导航栏将首先隐藏,如下所示:

然后,它会自动显示为:

我尝试过一些方法,比如在按下下一个视图控制器之前显示导航栏,但它非常难看。。 是否有人知道如何在第二个视图上直接显示导航栏(如在联系人应用程序中)

[更新]:代码

AppDelegate.m(我说的是导航控制器2)

FirstView.m

- (void) searchBarTextDidBeginEditing:(UISearchBar *)theSearchBar {
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (!noResultsToDisplay) {
        PinDetailsViewController *pinDetailsViewController = [[PinDetailsViewController alloc] initWithNibName:@"PinDetailsViewController" bundle:nil];
        NSManagedObject *managedObject = [fetchedResultsController objectAtIndexPath:indexPath];
        Pin *pin = (Pin *) managedObject;

        [self.navigationItem setTitle:@"Pins"];
        [self.navigationController pushViewController:pinDetailsViewController animated:YES];
        [pinDetailsViewController updateWithPin:pin];
    }
}

如果您还需要什么,尽管询问,但我想已经全部解决了。

在按下新的视图控制器之前,您应该取消隐藏导航栏:


[self.navigationController setnavigationbar隐藏:否动画:是]

导航栏的位置也有类似的问题。我的在状态栏后面向上移动,我通过手动设置导航栏框架解决了这个问题:

-(void)adjustNavBarOrigin
{
    CGRect r = self.navigationController.navigationBar.frame;
    r.origin = CGPointMake(0, 20);  // 20 is the height of the status bar
    self.navigationController.navigationBar.frame = r;   
}

我不得不在很多地方调用这个方法,包括viewwillexpress:和didRotateFromInterfaceOrientation:,但它起了作用:)

隐藏UINavigationBar有时会干扰属性。尝试使用属性
alpha
而不是
hidden

尝试在每个viewcontroller中使用此代码

- (void) viewWillAppear:(BOOL)animated
{

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

}


- (void) viewWillDisappear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:YES animated:animated];

}

请发一些代码。如果你再看一次我的帖子,你会发现我已经试过了。它能用,但很难看。我希望与联系人应用程序中的行为相同。我更改了应用程序的整个布局,因此不再使用它,但它工作起来很有魅力。希望它能帮助其他人。谢谢。它帮助我摆脱了2015年12月的头痛!非常感谢。
- (void) viewWillAppear:(BOOL)animated
{

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

}


- (void) viewWillDisappear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:YES animated:animated];

}