Swift class 与 uibutton.addTarget 到 UIView 不工作
Swift class with uibutton.addTarget to UIView not working
我用以下 class 创建了一个新文件:
import Foundation
import UIKit
var Feld = classFeld()
class classFeld {
let button = UIButton()
func createButton() -> UIButton {
button.frame = CGRect(x: 10, y: 50, width: 200, height: 100)
button.backgroundColor=UIColor.black
button.addTarget(self, action: #selector(ButtonPressed(sender:)), for: .touchUpInside)
return button
}
@objc func ButtonPressed(sender: UIButton!) {
button.backgroundColor=UIColor.red
}
}
这是我的 ViewController:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
mainview.addSubview(Feld.createButton())
self.view.addSubview(mainview)
}
var mainview=UIView()
}
当我启动应用程序时,会创建一个黑色按钮,但当我单击它时,它不会变成红色。
如果我添加按钮而不是
mainview.addSubview(Feld.createButton())
到
self.view.addSubview(Feld.createButton())
有效,按钮变为红色。
有人可以解释一下为什么吗?如果我添加一些东西到 self.view 或添加到一个子视图然后添加到 self.view?
应该没有什么区别
因为你需要给它一个frame并添加到self.view
var mainview = UIView()
这是因为您只是在初始化一个 UIView
,而没有给它任何框架并将其添加到主视图。
您还需要为您的主视图提供框架。例如:
class ViewController: UIViewController {
var mainview = UIView()
override func viewDidLoad() {
super.viewDidLoad()
mainview.frame = CGRect(x: 10, y: 50, width: 300, height: 300)
self.view.addSubview(mainview)
mainview.addSubview(Feld.createButton())
}
}
以下是 ViewController
class 的更改并且工作正常:
class ViewController: UIViewController {
var mainview: UIView!
override func viewDidLoad() {
super.viewDidLoad()
mainview = UIView(frame: self.view.bounds)
mainview.addSubview(Feld.createButton())
self.view.addSubview(mainview)
}
}
我用以下 class 创建了一个新文件:
import Foundation
import UIKit
var Feld = classFeld()
class classFeld {
let button = UIButton()
func createButton() -> UIButton {
button.frame = CGRect(x: 10, y: 50, width: 200, height: 100)
button.backgroundColor=UIColor.black
button.addTarget(self, action: #selector(ButtonPressed(sender:)), for: .touchUpInside)
return button
}
@objc func ButtonPressed(sender: UIButton!) {
button.backgroundColor=UIColor.red
}
}
这是我的 ViewController:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
mainview.addSubview(Feld.createButton())
self.view.addSubview(mainview)
}
var mainview=UIView()
}
当我启动应用程序时,会创建一个黑色按钮,但当我单击它时,它不会变成红色。 如果我添加按钮而不是
mainview.addSubview(Feld.createButton())
到
self.view.addSubview(Feld.createButton())
有效,按钮变为红色。
有人可以解释一下为什么吗?如果我添加一些东西到 self.view 或添加到一个子视图然后添加到 self.view?
应该没有什么区别因为你需要给它一个frame并添加到self.view
var mainview = UIView()
这是因为您只是在初始化一个 UIView
,而没有给它任何框架并将其添加到主视图。
您还需要为您的主视图提供框架。例如:
class ViewController: UIViewController {
var mainview = UIView()
override func viewDidLoad() {
super.viewDidLoad()
mainview.frame = CGRect(x: 10, y: 50, width: 300, height: 300)
self.view.addSubview(mainview)
mainview.addSubview(Feld.createButton())
}
}
以下是 ViewController
class 的更改并且工作正常:
class ViewController: UIViewController {
var mainview: UIView!
override func viewDidLoad() {
super.viewDidLoad()
mainview = UIView(frame: self.view.bounds)
mainview.addSubview(Feld.createButton())
self.view.addSubview(mainview)
}
}