子 class 从父 class 继承未改变颜色
child class inheriting from parent class not changing color
我的 swift 代码试图从父 class 继承 view1 到子 class 二。 view1 被重新配置,但是当代码为 运行 并且应用了 segue 时,屏幕上没有任何变化。 view1 应将颜色从粉红色更改为青色。不是我不明白为什么没有应用更改。
import UIKit
class one : UIViewController {
var view1 = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
[view1].forEach{
[=12=].translatesAutoresizingMaskIntoConstraints = false
view.addSubview([=12=])
}
view1.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
view1.backgroundColor = .systemPink
view.backgroundColor = .orange
view1.addTarget(self, action: #selector(move), for: .touchDown)
}
@objc func move(){
let vc = two()
vc.modalPresentationStyle = .overCurrentContext // actually .fullScreen would be better
self.present(vc, animated: true)
}
}
class two: one {
override func viewDidLoad() {
view1.backgroundColor = .cyan
}
}
您的代码运行良好; Two 的呈现正在发生。但是你什么也看不到,因为:
Two的view
的backgroundColor
是nil
,即.clear
,所以看不到背景
在二中,您永远不会在界面中放置任何东西。您与 viewDidLoad
中的按钮 view1
对话,但与 One 的 viewDidLoad
不同,您永远不会将该按钮放入界面中。所以你看不到按钮(因为它不存在)。
最小的“修复”是在 Two's viewDidLoad
:
中调用 super
override func viewDidLoad() {
super.viewDidLoad() // *
view1.backgroundColor = .cyan
}
我的 swift 代码试图从父 class 继承 view1 到子 class 二。 view1 被重新配置,但是当代码为 运行 并且应用了 segue 时,屏幕上没有任何变化。 view1 应将颜色从粉红色更改为青色。不是我不明白为什么没有应用更改。
import UIKit
class one : UIViewController {
var view1 = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
[view1].forEach{
[=12=].translatesAutoresizingMaskIntoConstraints = false
view.addSubview([=12=])
}
view1.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
view1.backgroundColor = .systemPink
view.backgroundColor = .orange
view1.addTarget(self, action: #selector(move), for: .touchDown)
}
@objc func move(){
let vc = two()
vc.modalPresentationStyle = .overCurrentContext // actually .fullScreen would be better
self.present(vc, animated: true)
}
}
class two: one {
override func viewDidLoad() {
view1.backgroundColor = .cyan
}
}
您的代码运行良好; Two 的呈现正在发生。但是你什么也看不到,因为:
Two的
view
的backgroundColor
是nil
,即.clear
,所以看不到背景在二中,您永远不会在界面中放置任何东西。您与
viewDidLoad
中的按钮view1
对话,但与 One 的viewDidLoad
不同,您永远不会将该按钮放入界面中。所以你看不到按钮(因为它不存在)。
最小的“修复”是在 Two's viewDidLoad
:
super
override func viewDidLoad() {
super.viewDidLoad() // *
view1.backgroundColor = .cyan
}