14

我很抱歉我是 iPhone 编程的新手。

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

这是一些代码和屏幕截图:

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

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

在我的 masterviewcontroller.m

- (IBAction)goToSettings:(id)sender{    
    [self performSegueWithIdentifier:@"SettingsSegue" sender:self];
}

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

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

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

所以我的问题是为什么它现在出现了,我该如何得到它?我想要一个后退按钮,例如主-详细信息项目附带的详细视图控制器。

编辑#1

我添加了一个检查导航控制器是否为 nil 并且它不是 nil(从未输入 if 语句)我还尝试将导航项更改为 back 并删除,但没有一个有效。

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

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

在此处输入图像描述

4

7 回答 7

13

由于我的 segue 的“风格”,导航项目没有出现。

将场景从主视图控制器移动到设置视图控制器的 segue 设置为“模态”。它必须设置为“推”。这是从实用程序窗格上的情节提要完成的

于 2012-06-05T23:47:22.163 回答
6

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

  • 在情节提要中选择 Segue;
  • 转到属性检查器(在右侧窗格选项卡上);
  • 将 Style 属性更改为 Push。

它将使屏幕从右向左滚动,并且导航栏将出现滑动。使用 Modal,屏幕从底部到顶部,不会让导航栏出现。

于 2012-11-23T18:29:15.710 回答
5

我的问题是导航控制器不是“初始视图控制器”

所以我不得不这样做

在此处输入图像描述

于 2014-10-27T18:31:56.680 回答
1

您已验证 viewDidLoad 方法中列出的导航控制器不为零?

假设您确实有一个self.navigationItem非零的 a ,那么您似乎错误地将您的设置self.navigationItem.leftBarButtonItem为 a editButtonItem,而是尝试将其全部删除!

如果删除它不能解决问题,请尝试:

self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;
于 2012-06-05T03:29:22.543 回答
0

请检查您的视图控制器是否是导航控制器的根视图控制器。您不能直接将视图控制器呈现为模态视图控制器。您必须将您的视图控制器作为导航控制器的根视图控制器,然后将您的导航控制器呈现为模态视图控制器。

// Create the root view controller for the navigation controller
// The new view controller configures a Cancel and Done button for the
// navigation bar.
YourViewController *addController = [[YourViewController alloc]
                   init];

// Configure the YourViewController.

// Create the navigation controller and present it.
UINavigationController *navigationController = [[UINavigationController alloc]
                         initWithRootViewController:addController];
[self presentViewController:navigationController animated:YES completion: nil];
于 2014-09-15T18:07:32.757 回答
0

你需要有一个导航控制器和一个视图控制器。

“导航控制器管理界面顶部的导航栏和界面底部的可选工具栏。导航栏始终存在并由导航控制器本身管理,它使用由提供的内容更新导航栏它的子视图控制器。当isToolbarHidden属性为 false 时,导航控制器类似地使用最顶层视图控制器提供的内容更新工具栏。 https://developer.apple.com/documentation/uikit/uinavigationcontroller

在此处输入图像描述

于 2020-04-20T08:17:38.860 回答
0

导航项也出现在视图控制器场景中,您可以在那里查找并编辑它

于 2020-07-11T01:26:03.980 回答