我的快速代码想将view1从父类1继承到子类2。重新确认了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{
$0.translatesAutoresizingMaskIntoConstraints = false
view.addSubview($0)
}
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
}
}
你的代码运行正常;二的介绍正在发生。但是你什么都看不到,因为:
“ backgroundColor
2 ”的取值view
为nil
,即.clear
,因此你看不到背景。
在《二》中,你永远不会在界面中放任何东西。你说话的按钮view1
中viewDidLoad
,但不像一个人的viewDidLoad
,你从来没有把这个按钮进入界面。因此你看不到该按钮(因为它不存在)。
一个最小的“解决方案”是调用super
Two的viewDidLoad
:
override func viewDidLoad() {
super.viewDidLoad() // *
view1.backgroundColor = .cyan
}