繁体   English   中英

栏栏按钮项目未显示在navigationBar中

[英]Bar button item not shown in navigationBar

我正在开发一个应用程序,我的初始视图控制器嵌入在导航控制器和标签栏控制器中。

在我的应用程序中,我有3个不同的选项卡,一个选项卡是设置视图。 这是一个带5个按钮的tableview。 每个按钮在触摸时都会显示相同的视图控制器。

当我触摸其中一个按钮时,我仍然有一个漂亮的绿色导航栏,但我的按钮不起作用。

我尝试将导航项拖到我的故事板中的视图中,然后在其中放置一个条形按钮项。 我可以在我的故事板中看到该按钮,但是当我运行它时它不会显示在我的应用程序中。

我还在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,做了几个Clean构建(CMD + Shift + K)和Rebuilds(CMD + B)。

以下图片是我的故事板的一部分的屏幕截图,以及我的应用程序的屏幕截图,其中按钮不会显示。

编辑

添加了有关视图中控件的新屏幕截图。 这些不带不带我viewDidLoad中额外的代码工作。

我的故事板的截图

应用程序按钮应显示的屏幕截图

我视图中控件设置的屏幕截图

代替

navigationController?.navigationItem.leftBarButtonItem = leftItem

navigationItem.leftBarButtonItem = leftItem

更新我建议您直接在故事板中将它们添加到Viewcontroller中

删除你的第一个导航控制器,第二个你不需要添加后退按钮只需使用push segue,第三个尝试使用self.navigationItem.leftBarButtonItem(尝试在开头添加self。)*原始答案是评论。

我也遇到了同样的问题。

在iOS 11中,它运行良好,但对于iOS 10或更低版本,它没有显示以编程方式添加的UIBarButtonItems。

请将帧分配给UIBarButtonItem。

 let button = UIButton(type: .custom) button.setImage(UIImage(named: "img_name"), for:.normal) button.addTarget(self, action: #selector(btnAction), for: .touchUpInside) button.frame = CGRect(x:0, y:0, width:32, height:32) let barButton = UIBarButtonItem(customView: button) self.navigationItem.rightBarButtonItem = barButton 

我有两个段落:一个是通过故事板segue,一个是程序化的。 故事板segue按预期显示按钮。 然而,progammatic segue显示没有按钮的视图。

对于程序化的segue,我使用的是:

present(theNewVC, animated: true)

当我将其更改为:时,按钮出现并正常运行:

show(theNewVC, sender: self)

根据文档, present(...)以模态方式呈现视图控制器。 显然,模态视图控制器不会获得导航栏按钮。 我通过将故事板segue改为Present Modally进一步证实了这Present Modally - 按钮也在那里消失了。

(使用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方法上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM