使用自定義UIToolbar XIB iOS更改UIViewController背景色

我是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
    }
  
}
? 最佳回答:

在自定義工具欄中添加協議

protocol BackgroundColorControlDelegate: AnyObject {
    func changeBackgroundColor(sender:Any, color: UIColor)
}

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
   weak var delegate: BackgroundColorControlDelegate?


    override func awakeFromNib() {
        super.awakeFromNib()
        setupButtonColor()
    }

    @IBAction func colorButtonPressed(_ sender: UIBarButtonItem) {
        guard let color = sender.tintColor else {return}
        selectedColor = color
        print(selectedColor)
        delegate?.changeBackgroundColor(sender: self, color: color)
    }
    @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
    }
}

從MakeNotesVC調用委托

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()
    toolbar.delegate = self
    //Add toolbar to keyboard
    titleTextfield.inputAccessoryView = toolbar
    notesText.inputAccessoryView = toolbar
}

}

extension MakeNotesVC: BackgroundColorControlDelegate  {
    func changeBackgroundColor(sender:Any, color: UIColor) {
        view.backgroundColor = color
    }
}
主站蜘蛛池模板: 亚洲av片一区二区三区| 无码日韩人妻av一区免费| 国产伦精品一区二区三区视频小说| 精品一区二区三区在线观看| 亚洲一区AV无码少妇电影| 国产午夜精品一区二区三区不卡| 综合一区自拍亚洲综合图区| 97久久精品无码一区二区天美 | 中文字幕AV一区二区三区人妻少妇| 亚洲精品国产suv一区88| 久久久久女教师免费一区| 日本韩国一区二区三区| 国产福利日本一区二区三区| 亚洲av无码片区一区二区三区| 亚洲AV无一区二区三区久久| 清纯唯美经典一区二区| 乱人伦一区二区三区| 一区二区三区无码高清| 视频一区视频二区在线观看| 国产精品一区二区三区高清在线 | 亚洲福利电影一区二区?| 一区二区乱子伦在线播放| 国产精品一区二区三区免费| 国产成人高清视频一区二区| 一区二区三区四区国产| 国产精品主播一区二区| 一区二区三区在线播放视频| 国产成人久久精品麻豆一区| 日韩熟女精品一区二区三区| 一区二区三区免费高清视频| 久久毛片免费看一区二区三区| 国产精品被窝福利一区| 国产免费一区二区三区不卡 | 狠狠综合久久av一区二区| 国产福利酱国产一区二区| 免费一区二区三区在线视频| 天码av无码一区二区三区四区| 好吊视频一区二区三区| 久久久精品一区二区三区| 亚洲Av高清一区二区三区| 午夜爽爽性刺激一区二区视频|