簡體   English   中英

如何在iOS中的導航欄中添加標准信息按鈕?

[英]How to add a standard info button to a navigation bar in iOS?

我想在導航欄中添加一個帶有系統信息圖標的右側欄按鈕。 但我發現UIBarButtonSystemItem不提供這種類型的按鈕。 另一方面,我嘗試使用UIButton類型的UIButtonType.infoLight ,但我不允許將它分配給navigationItem.rightBarButtonItems

有沒有辦法做到這一點?

這可以使用.infoLight類型的UIButton對象來實現

let infoButton = UIButton(type: .infoLight)
infoButton.addTarget(self, action: #selector(infoButtonTapped), forControlEvents: .TouchUpInside)
let barButton = UIBarButtonItem(customView: infoButton)
self.navigationItem.rightBarButtonItem = barButton

或者:

通過將infoImage添加到您的Asset catalog並使用下面的代碼創建barButtonItem

let infoButton = UIBarButtonItem(image: UIImage(named: "infoImage"), style: .Plain, target: self, action: #selector(ViewController.infoButtonTapped))
self.navigationItem.rightBarButtonItem = infoButton 

您可以使用自定義視圖初始化UIBarButtonItem

let button = UIButton(type: .infoLight)
let barButton = UIBarButtonItem(customView: button)

Swift 5.0

override func viewDidLoad() {
    super.viewDidLoad()

    let infoButton = UIButton(type: .infoLight)
    infoButton.addTarget(self, action: #selector(infoButtonTapped), for: .touchUpInside)
    navigationItem.rightBarButtonItem = UIBarButtonItem(customView: infoButton)
}

@objc func infoButtonTapped() {}

我找到了一種使用Interface Builder將信息圖標添加到導航欄的更簡單方法。

  1. 不要將欄按鈕項添加到導航欄
  2. 向UIView添加一個按鈕
  3. 將按鈕類型更改為Info Light
  4. 將按鈕拖放到導航欄的右上角。 這是全部。 條形按鈕項目將自動出現,添加的信息按鈕將位於條形按鈕項目下(然后,像往常一樣對按鈕執行操作)

將infoButton圖像添加到資源中,並通過提供名稱將其設置為barButton。

UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"infoImage.png"] style:UIBarButtonItemStyleDone target:self action:@selector(barButtonAction)];

    self.navigationItem.rightBarButtonItem = item;

在斯威夫特

  let item = UIBarButtonItem(image: UIImage(named: "infoImage.png"), style: .Plain, target: self, action: #selector(barButtonAction))

        self.navigationItem.rightBarButtonItem = item
UIButton *doneBtn = [[UIButton alloc] initWithFrame...];
[doneBtn setTitle:@"Submit" forState:UIControlStateNormal];
doneBtn.titleLabel.font = [UIFont systemFontOfSize: 14.0];
[doneBtn addTarget:self action:@selector(doSubmit:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:doneBtn];
self.navigationItem.rightBarButtonItem = rightButton;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM