簡體   English   中英

以編程方式將條形按鈕項圖像設置為系統項—Swift

[英]Setting bar button item image to system item programmatically—Swift

我有一個條形按鈕項設置為我的圖像資產文件夾中的自定義圖像。 啟動后,一旦用戶按下按鈕,我希望它更改為系統項 — 停止 ( X ) 按鈕。 我知道如何以編程方式更改條形按鈕的圖像,但是如何將圖像更改為代碼中的系統項之一?

Swift 3,Xcode 8 測試版 1。

編輯這是我引用的系統項目: Xcode 系統項

如何將我的按鈕圖像從我的代碼更改為這些系統項之一?

我有一個從我的圖像資產文件夾中設置為自定義圖像的條形按鈕項目。 啟動后,一旦用戶按下按鈕,我希望它更改為系統項目-停止( X )按鈕。 我知道如何以編程方式更改條形按鈕的圖像,但是如何將圖像更改為代碼中的系統項之一?

Swift 3,Xcode 8 beta 1。

編輯這是我引用的系統項目: Xcode系統項目

如何從代碼中將按鈕的圖像更改為這些系統項之一?

navigationItem.rightBarButtonItem = UIBarButtonItem(
    barButtonSystemItem: UIBarButtonItem.SystemItem.add, 
    target: self, 
    action: #selector(yourMethod)
)

根據https://developer.apple.com/documentation/uikit/uibarbuttonitem/systemitem更改“添加”

對於使用 iOS 13 及更高版本的用戶,您可以使用 UIImage(systemName:) 屬性。 您可以使用Apple 的 SF Symbols 應用程序搜索 systemItem 名稱和相應的圖像。 這是使用停止 X 按鈕的示例:

barButtonItem.image = UIImage(systemName: "xmark")

您需要做的是有兩個按鈕(您可以通過編程或在界面構建器中設置它們),一個帶有圖像,另一個帶有停止行為。 當按下一個時,切換兩者的可見性。

我相信最好的選擇是以編程方式進行的,所以方法如下:

添加兩個欄按鈕項作為類成員:

private var itemOn: UIBarButtonItem!
private var itemOff: UIBarButtonItem!

然后在viewDidLoad根據需要設置值(一個具有圖像,另一個具有帶有“X”的正常行為)。 然后將itemOn按鈕添加到導航欄:

self.navigationItem.rightBarButtonItem = itemOn

請注意,兩者都應該具有相同的操作:

self.itemOn.target = self
self.itemOn.action = Selector("toggleVisibleButton:")
self.itemOff.target = self
self.itemOff.action = Selector("toggleVisibleButton:")

然后實現 toggleVisibleButton 函數:

func toggleVisibleButton(sender: UIBarButtonItem) {
    if self.navigationItem.rightBarButtonItem == itemOn {
        self.navigationItem.rightBarButtonItem = itemOff
        // Do something with the button that has the image
    } else {
        self.navigationItem.rightBarButtonItem = itemOn
        // Do something with the button that has the X
    }
}

Swift 3 更新

像這樣設置動作:

self.itemOn.action = #selector(self.toggleVisibleButton(sender:))

暫無
暫無

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

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