导航项目未出现在View Controller上

时间:2012-06-05 03:01:47

标签: iphone ios uiviewcontroller uinavigationcontroller uinavigationitem

我很抱歉我是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;

在我的masterviewcontroller.m

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

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

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

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

所以我的问题是为什么它现在出现了,我该怎么做呢?我想要一个后台按钮,就像我的详细视图控制器一样,附带了主 - 细节项目。

EDIT#1

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

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

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

enter image description here

7 个答案:

答案 0 :(得分:11)

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

将场景从主视图控制器移动到设置视图控制器的segue设置为'modal'。它必须设置为“推”。这是从实用程序窗格上的故事板

完成的

答案 1 :(得分:6)

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

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

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

答案 2 :(得分:5)

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

所以我必须这样做

enter image description here

答案 3 :(得分:1)

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

假设您正确拥有非{n}的self.navigationItem,您似乎错误地将self.navigationItem.leftBarButtonItem设置为editButtonItem,而是尝试将其全部删除!< / p>

如果删除它无法解决问题,请尝试:

self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;

答案 4 :(得分: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];

答案 5 :(得分:0)

您需要具有导航控制器和视图控制器。

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

enter image description here

答案 6 :(得分:0)

导航项也出现在View Controller场景中,您可以在其中查找和编辑它