[英]Button item not shown in navigationBar embebed in TabBarController
[英]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.