【发布时间】:2020-05-26 16:07:08
【问题描述】:
我是 Swift 新手,目前对 Delegates 很感兴趣。 我需要从父控制器中的按钮更改嵌入式控制器 UIColor。
这是我尝试过的
1) 我创建了一个使用 func 和 UIColor 作为 arumetn 的委托协议 2)在Parent VC(ThirdViewController)中添加一个实例
父 VC 中的代码
import UIKit
protocol TVCDelegate: class {
func setColor(color: UIColor)
}
class ThirdViewController: UIViewController {
weak var delegate: TVCDelegate?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? AdditionalThirdViewController {
vc.setColor(color: UIColor.red) }}
@IBAction func redButton(_ sender: Any?) {
I need this button to change color in **Embedded VC** }
override func viewDidLoad() {
super.viewDidLoad() }
}
}
extension ThirdViewController: TVCDelegate {
func setColor(color: UIColor) {
view.backgroundColor = color
} }
嵌入式vc中的代码
import UIKit
class AdditionalThirdViewController: UIViewController {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? ThirdViewController {
vc.delegate = self } }
@IBAction func redButton(_ sender: Any) {
}
override func viewDidLoad() {
super.viewDidLoad()
最后我需要两个控制器都有三个按钮,每个按钮都可以改变其他控制器的颜色。
我怎样才能做到这一点? 另外,您是否有建议阅读有关傻瓜代表的内容?
【问题讨论】:
标签: ios swift uiviewcontroller uicollectionview uicolor