簡體   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