使用代码启动视图控制器时标题和导航栏消失

Title and nav bar disappearing when launching view controller with code

我正在使用以下代码以模态方式启动视图控制器。这个视图控制器不是从头开始创建的。相反,我在情节提要中创建并设计了它的样式,给它起了一个名字,将它嵌入到一个导航控制器中,因此它有一个导航栏,并创建了取消和完成按钮,给它一个标题,然后下面的代码启动它。

问题是,虽然屏幕的大部分功能(例如标签和图像)都显示了,但您可以在故事板中看到的标题和导航栏却消失了。有没有人遇到过这个问题并有解决办法?

我的启动代码 VC 在故事板中创建。

- (void) editView:(id) sender
{
    NSLog(@"launch button pressed");
    UIStoryboard *storyBoard = self.storyboard;
    IDEditVC *editVC =
    [storyBoard instantiateViewControllerWithIdentifier:@"editvc"];
editVC.item = _item;
[self presentModalViewController:editVC animated:YES];
    }

尝试使用 PushViewController 而不是实例化:

How to push viewcontroller ( view controller )?

祝你好运

我认为发生的事情是,由于您直接按名称实例化视图控制器,因此它只是从情节提要中获取,而不是将其嵌入导航控制器中。

试试这个:

  1. 在您的情节提要中,将导航控制器设为情节提要的 initial/root 视图控制器
  2. 不按名称实例化,而是使用 UIStoryboard 的 instantiateInitialViewController 方法。

编辑: 根据您在下方的评论,您可能想试试这个:

- (void) editView:(id) sender
{
    NSLog(@"launch button pressed");
    UIStoryboard *storyBoard = self.storyboard;
    IDEditVC *editVC =
    [storyBoard instantiateViewControllerWithIdentifier:@"editvc"];
    editVC.item = _item;

    UINavigationController *nav = [UINavigationController alloc] initWithRootViewController: IDEditVC];
    // Do whatever setup you want to here for your title bar, etc
    [self presentModalViewController:nav animated:YES];
}