导航项目未出现在View Controller上

SRQ*_*rsh 12 iphone uiviewcontroller uinavigationcontroller uinavigationitem ios

我很抱歉我是iphone编程的新手.

我创建了一个Master-Detail Iphone应用程序(因此导航控制器附带了该项目).我通过masterviewcontroller上的UIBarButtonItem创建了一个新的视图控制器.然而,与detailviewcontroller(项目附带)不同,我似乎无法在视图上显示导航项(或导航栏?),即使它出现在我的故事板的场景列表中.

下面是一些代码和截图:

在我的masterviewcontroller.m viewdidload()函数中

UIBarButtonItem *settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:normal target:self action:@selector(goToSettings:)];
self.navigationItem.leftBarButtonItem = settingsButton;
Run Code Online (Sandbox Code Playgroud)

在我的masterviewcontroller.m中

- (IBAction)goToSettings:(id)sender{    
    [self performSegueWithIdentifier:@"SettingsSegue" sender:self];
}
Run Code Online (Sandbox Code Playgroud)

我尝试在我创建的新viewcontroller.m类的viewDidLoad函数中为navigationitem添加标题(在此链接中提到但它不起作用)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.navigationItem.title = @"Settings";
    self.navigationItem.leftBarButtonItem = self.editButtonItem;
}
Run Code Online (Sandbox Code Playgroud)

但它仍然显示在我的故事板中(它显示在场景下的列表中但不显示在视图中)

所以我的问题是为什么它现在出现了,我该如何实现呢?我想要一个后台按钮,就像我的详细视图控制器,它与master-detail项目一起提供.

编辑#1

我已经添加了一个检查导航控制器是否为零并且它不是nil(if语句从未输入)我也尝试将导航项更改为后退并删除,但没有一个工作.

if(self.navigationItem == nil)
{
    [ self.navigationItem init];
}
self.navigationItem.title = @"Settings";
self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;
Run Code Online (Sandbox Code Playgroud)

现在我有足够的声誉来显示图像我可以显示导航项目显示在列表中但没有显示在视图上

在此输入图像描述

SRQ*_*rsh 11

由于我的segue的"风格",导航项目没有显示出来.

将场景从主视图控制器移动到设置视图控制器的segue设置为"模态".它必须设置为"推".这是通过实用程序窗格上的故事板完成的


Tch*_*low 6

你必须通过这样做来改变你的Segue Style:

  • 在故事板中选择Segue;
  • 转到"属性"检查器(在右窗格选项卡上);
  • 将Style属性更改为Push.

它将使屏幕从右向左滚动,导航栏将显示为滑动.使用Modal,屏幕从屏幕的底部到顶部,不会出现导航栏.


Jor*_*ego 5

在我的情况下,问题是导航控制器不是“初始视图控制器”

所以我必须这样做

在此处输入图片说明