【问题标题】:Dynamically changing background color in VCVC中动态改变背景颜色
【发布时间】:2021-11-23 21:52:12
【问题描述】:


我的作业被这块卡住了。
也许有人可以解释我如何解决它。

“VC 包含一个带有内置控制器的控制器。两者都是父级和子控制器有三个按钮:绿色、黄色、紫罗兰。当您单击父控制器中的一个按钮时,子控制器的背景颜色会更改为相应的颜色。当您单击子控制器中的按钮时,父级的背景发生变化。”


这是我在代码中所做的
父 VC

import UIKit

class OrangeViewController: UIViewController, VioletControllerDelegate {
   
    

    var delegate: VioletControllerDelegate?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            let vcV = segue.destination as! VioletViewController
            vcV.bgColor = view.backgroundColor
            vcV.delegate = self
        }

    
    @IBAction func greenOButton(_ sender: Any) {
        //TO DO
    }
    
    @IBAction func yellowOButton(_ sender: Any) {
        //TO DO
    }
    
    @IBAction func purpleOButton(_ sender: Any) {
        //TO DO
    }
    
    func setColor(color: String) {
        view.backgroundColor = UIColor(named: color)
    }
}


儿童 VC

import UIKit
protocol VioletControllerDelegate{
    func setColor ( color : String)
}

class VioletViewController: UIViewController {
    var bgColor : UIColor?
   
    var delegate: VioletControllerDelegate?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        var bgColor = view.backgroundColor
    }
    
    @IBAction func setGreen(_ sender: Any) {
        delegate?.setColor( color: "green")
    }
    @IBAction func setYellow(_ sender: Any) {
        delegate?.setColor( color: "yellow")
    }
    
    @IBAction func setViolet(_ sender: Any) {
        delegate?.setColor( color: "violet")
    }
    
    func setColor ( color : String){
    view.backgroundColor = UIColor(named: color)
    }
}


谢谢!

【问题讨论】:

    标签: swift uiviewcontroller


    【解决方案1】:

    我做到了。如果有人需要这样的东西,我会发布我的答案:

    父 VC

    import UIKit
    
    class OrangeViewController: UIViewController, VioletControllerDelegate {
       
       
        
    
        var childVC: VioletViewController?
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
        }
        override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
                let vcV = segue.destination as! VioletViewController
                self.childVC = vcV
                vcV.delegate = self
            }
    
        
        @IBAction func greenOButton(_ sender: Any) {
            childVC?.view.backgroundColor = UIColor.green
        }
        
        @IBAction func yellowOButton(_ sender: Any) {
            childVC?.view.backgroundColor = UIColor.yellow
        }
        
        @IBAction func purpleOButton(_ sender: Any) {
            childVC?.view.backgroundColor = UIColor.purple
        }
        
        func setColor( color : UIColor) {
            view.backgroundColor = color
        }
    }
    

    儿童 VC

    import UIKit
    protocol VioletControllerDelegate{
        func setColor ( color : UIColor)
    }
    
    class VioletViewController: UIViewController {
        
       
        var delegate: VioletControllerDelegate?
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
        }
        
        @IBAction func setGreen(_ sender: Any) {
            delegate?.setColor( color: UIColor.green)
        }
        @IBAction func setYellow(_ sender: Any) {
            delegate?.setColor( color: UIColor.yellow)
        }
        
        @IBAction func setViolet(_ sender: Any) {
            delegate?.setColor( color: UIColor.purple)
        }
        
        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 2014-04-05
      相关资源
      最近更新 更多