2015-02-24 32 views
3

我有一個Swift應用程序,瀏覽許多視圖控制器,所有的都有相似的外觀。每個視圖控制器中都有一些按鈕,我沒有創建IBOutlet屬性(它們都只是通過Interface Builder觸發分段)。我可以更改Swift應用程序中所有按鈕的屬性嗎?

有一種簡單的方法來改變背景顏色或在應用中的所有按鈕的文本顏色,而不會改變它的每一個按鈕,在IB,或爲每個按鈕創建一個IBOutlet?

+0

我現在所做的是所有的按鈕和編寫的代碼來改變他們的創建IB出口集合。但我想知道我是否可以使用外觀代理? – Maxpower 2015-03-03 14:48:51

回答

4

以下是這將簡化事情的基本步驟,你的情況,這將必須重複每一個的viewController。

  1. 創建所有的按鈕一個出口:

    @IBOutlet var myButtons: [UIButton]! 
    
  2. 連接(拖放)該出口與每個視圖上的按鈕。點擊界面上的每個按鈕,然後在connections inspector(最後一個帶有箭頭的按鈕)中找到「引用插座集合」。請注意,他們應該全部通過鏈接到myButtons

  3. 樣式您在按鈕循環:

    for button in self.myButtons { 
        button.backgroundColor = UIColor.clearColor() 
        button.layer.borderWidth = 1 
        button.layer.borderColor = UIColor.greenColor().CGColor 
    } 
    

爲了使這一工作中的應用廣泛,你有幾種選擇進行調查。至少當你想改變樣式時,你可以使用常量,你只需要修改一個文件:Constants in Objective-C,Global constants file in Swift

或者有幾種方法可以讓一個函數公開。我會嘗試並獲得一些示例代碼,而是一個叫buttonStyle類可以用於循環是重要到每一個的viewController,並呼籲在:[buttonStyle styleButton:button]styleButton函數會設置樣式(我沒有測試過任何東西)。

結帳這個答案由@zisoft:How to loop through Outlets of a UIViewController with Swift,它是一個日誌更詳細的!

0

轉到您的appDelegate,並改變(這隻會改變文字顏色):

let buttonAppearance = UIButton.appearance() 
    buttonAppearance.tintColor = UIColor(red: 1.0, green:1.0, blue:1.0, alpha:1.0) 

這將屬性的文本顏色想爲所有的按鈕。 您可以的導航欄,等的TabBar做同樣的....

相關問題