我很抱歉我是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;
现在我有足够的声誉来显示图像,我可以显示导航项目显示在列表中但没有显示在视图上
答案 0 :(得分:11)
由于我的segue的“风格”,导航项目没有显示。
将场景从主视图控制器移动到设置视图控制器的segue设置为'modal'。它必须设置为“推”。这是从实用程序窗格上的故事板
完成的答案 1 :(得分:6)
你必须通过这样做来改变你的Segue风格:
它将使屏幕从右向左滚动,导航栏将显示为滑动。 使用模态,屏幕从屏幕的底部到顶部,不会出现导航栏。
答案 2 :(得分:5)
我的问题是导航控制器不是"初始视图控制器"
所以我必须这样做
答案 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
答案 6 :(得分:0)
导航项也出现在View Controller场景中,您可以在其中查找和编辑它