#swift #uiviewcontroller
Вопрос:
Я застрял с этой частью моего домашнего задания.
может быть, кто-нибудь объяснит мне, как ее решить.
«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)
}
}
Дочерний ВК
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)
}
}
Спасибо!
Ответ №1:
Я сделал это. На случай, если кому-то понадобится что-то подобное, я публикую свой ответ:
Родительский ВК
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
}
}
Дочерний ВК
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)
}
}