我是swift的新手,我想從我已經在XIB創建的自定義UIToolbar更改UIViewController背景色。我也已經在鍵盤上添加了自定義工具欄。我該怎么做?
在我的工具欄中,有一個按鈕,指示用戶可以設置為UIViewController背景色的顏色。
My Custom Toolbar
自定義工具欄的類,ColorToolbar.swift
import UIKit
class ColorToolbar: UIToolbar {
@IBOutlet weak var purpleButton: UIBarButtonItem!
@IBOutlet weak var blueButton: UIBarButtonItem!
@IBOutlet weak var greenButton: UIBarButtonItem!
@IBOutlet weak var yellowButton: UIBarButtonItem!
@IBOutlet weak var redButton: UIBarButtonItem!
var makeNotesVC = MakeNotesVC()
var selectedColor : UIColor = UIColor.clear
override func awakeFromNib() {
super.awakeFromNib()
setupButtonColor()
}
@IBAction func colorButtonPressed(_ sender: UIBarButtonItem) {
guard let color = sender.tintColor else {return}
selectedColor = color
print(selectedColor)
makeNotesVC.view.backgroundColor = selectedColor
}
@objc func changeBgColor(){
makeNotesVC.view.backgroundColor = selectedColor
}
private func setupButtonColor(){
purpleButton.tintColor = Constants.TintColorButton.purple
blueButton.tintColor = Constants.TintColorButton.blue
greenButton.tintColor = Constants.TintColorButton.green
yellowButton.tintColor = Constants.TintColorButton.yellow
redButton.tintColor = Constants.TintColorButton.red
}
}
為我要更改背景顏色的UIViewController初始化,MakeNotesVC.swift
import UIKit
class MakeNotesVC: UIViewController {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
@IBOutlet weak var titleTextfield: UITextField!
@IBOutlet weak var notesText: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
addColorbutton()
}
@IBAction func saveButtonPressed(_ sender: UIBarButtonItem) {
let newNote = Note(context: context)
newNote.title = titleTextfield.text
newNote.text = notesText.text
self.navigationController?.popToRootViewController(animated: true)
}
func addColorbutton(){
// TODO : Add Color Options Toolbar
//Register custom toolbar
let toolbar = UINib(nibName: "Toolbar", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! ColorToolbar
toolbar.sizeToFit()
//Add toolbar to keyboard
titleTextfield.inputAccessoryView = toolbar
notesText.inputAccessoryView = toolbar
}
}
在自定義工具欄中添加協議
從MakeNotesVC調用委托