Barbutton项目在导航栏中没有显示
我正在开发一个应用程序,其中我的初始视图控制器embedded在导航控制器和选项卡栏控制器中。
在我的应用程序中,我有3个不同的选项卡,一个选项卡是设置视图。 这是一个5个button的桌面视图。 每个button在触摸时都会显示相同的视图控制器。
当我触摸其中一个button,我仍然有一个很好的绿色导航栏,但我的button不起作用。
我尝试将一个导航项拖动到我的故事板的视图中,然后在其中放置一个栏button项。 我可以看到故事板中的button,但是当我运行它时,它不会显示在我的应用程序中。
我还将下面的代码添加到了我的viewDidLoad()中:
let leftItem = UIBarButtonItem(title: "< Back", style: .Done, target: self, action: Selector("Save")) let rightItem = UIBarButtonItem(title: "Save", style: .Plain, target: self, action: Selector("Save")) //self.parentViewController?.navigationItem.leftBarButtonItem = leftItem // also doesn't work navigationController?.navigationItem.leftBarButtonItem = leftItem navigationController?.navigationItem.rightBarButtonItem = rightItem
但它不会有任何影响。
我检查了是否正确的UIViewController被分配到故事板的我的观点,做了几个清洁生成(CMD + Shift + K)和重build(CMD + B)。
以下图片是我的故事板的一部分的屏幕截图,以及我的应用程序的屏幕截图,其中button不会显示。
编辑
在视图中添加了关于控件的新屏幕截图。 这些不能在我的viewDidLoad中使用或不使用额外的代码。
删除你的第一个导航控制器,其次你不需要添加返回button只是使用push segue,第三尝试使用self.navigationItem.leftBarButtonItem(尝试添加自我在开始。)*原始答案是一个评论。
代替
navigationController?.navigationItem.leftBarButtonItem = leftItem
做
navigationItem.leftBarButtonItem = leftItem
更新我build议你直接将它们添加到你的ViewController的故事板
我有两个阶段:一个通过故事板segue,一个编程。 故事板segue按预期显示button。 然而,程序性的segue显示了没有button的视图。
对于编程的继续,我正在使用:
present(theNewVC, animated: true)
当我将其改为:
show(theNewVC, sender: self)
根据文档, present(...)
以模态方式呈现视图控制器。 显然,一个模式视图控制器不会得到导航栏button。 我进一步证实了这一点,通过改变我的故事板segue到Present Modally
– 并且button消失在那里以及。
(使用Xcode 9,Swift 4)
最近发生在我身上。 我正在做Ersin所说的,但是无济于事。 回过头来,发现这是罪魁祸首:
nav.pushViewController(notifications, animated: false) nav.pushViewController(interactionCreateOrEdit, animated: false)
我改变了
nav.setViewControllers([notifications, interactionCreateOrEdit], animated: false)
和UIBarButtonItems开始再次出现。
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; [button setImage:[[UIImage imageNamed:@"BtnBack"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal]; [button.imageView setTintColor:[UIColor whiteColor]]; [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; self.navigationItem.leftBarButtonItem = buttonItem;
这个代码写在ViewWillAppear方法上。