我有一个创建UIButton的功能。我使用其类的对象在同一个类中调用该方法。
如果我使用其对象调用该函数,则不会创建任何UI。如果我调用该方法只是创建了self.createbutton()
按钮。
class myClass: UIViewController {
let mainview = UIStackView()
func createbutton() {
let loadpageview = UIStackView()
loadpageview.axis = UILayoutConstraintAxis.vertical
loadpageview.distribution = UIStackViewDistribution.equalSpacing
loadpageview.alignment = UIStackViewAlignment.center
loadpageview.tag = 30
loadpageview.spacing = 16.0
let buttn = UIButton()
buttn.backgroundColor = .gray
buttn.setTitle("testttt", for: .normal)
buttn.frame.size.height = 30
buttn.frame.size.width = 40
buttn.addTarget(self, action: #selector(loginaction), for: .touchUpInside)
loadpageview.addArrangedSubview(buttn)
mainview.addArrangedSubview(loadpageview)
}
func mainviewlet() {
mainview.axis = UILayoutConstraintAxis.vertical
mainview.distribution = UIStackViewDistribution.equalSpacing
mainview.alignment = UIStackViewAlignment.center
mainview.spacing = 16.0
mainview.tag = 50
mainview.translatesAutoresizingMaskIntoConstraints = false;
self.view.addSubview(mainview)
}
}
如果我创建上述类的对象并调用createbutton()
,则无法正常工作
override func viewDidLoad() {
super.viewDidLoad()
self.mainviewlet()
let pl = myClass()
pl.createbutton()
}
如果我按如下方式调用方法,它可以工作:
override func viewDidLoad() {
super.viewDidLoad()
self.mainviewlet()
self.createbutton()
}
这里有什么问题?如何使用其对象调用方法。此外,我从另一个班级称呼它。因此我需要这个。谢谢你的帮助!
答案 0 :(得分:0)
在第一个示例中,您正在创建另一个myClass()
实例,并且将调用该引用中的方法。但是您希望在类的current
实例中创建Button。
override func viewDidLoad() {
super.viewDidLoad()
self.mainviewlet()
let pl = myClass()
pl.createbutton()
}
但是在工作示例中,您指的是Class的当前实例。所以它创建的UIButton是可见的。
override func viewDidLoad() {
super.viewDidLoad()
self.mainviewlet()
self.createbutton()
}
简单的OOPS
快乐编码
答案 1 :(得分:0)
要使其与另一个类的实例一起工作,请在单独的类中创建您的视图,例如MyView。然后创建一个将返回你的函数 要求的观点。然后从视图控制器中调用该类的对象上的该函数,您将获得视图,在您的情况下它是UIStackView,最后将其添加为视图控制器主视图的子视图。
Class MyView:NSObject{
func createbuttonWith(stackView:UIStackView) {
let loadpageview = UIStackView()
loadpageview.axis = UILayoutConstraintAxis.vertical
loadpageview.distribution = UIStackViewDistribution.equalSpacing
loadpageview.alignment = UIStackViewAlignment.center
loadpageview.tag = 30
loadpageview.spacing = 16.0
let buttn = UIButton()
buttn.backgroundColor = .gray
buttn.setTitle("testttt", for: .normal)
buttn.frame.size.height = 30
buttn.frame.size.width = 40
buttn.addTarget(self, action: #selector(loginaction), for: .touchUpInside)
loadpageview.addArrangedSubview(buttn)
stackView.addArrangedSubview(loadpageview)
}
func mainviewlet()->UIStackView {
let mainView = UIStackView()
mainview.axis = UILayoutConstraintAxis.vertical
mainview.distribution = UIStackViewDistribution.equalSpacing
mainview.alignment = UIStackViewAlignment.center
mainview.spacing = 16.0
mainview.tag = 50
mainview.translatesAutoresizingMaskIntoConstraints = false;
return mainView
}
}
然后在你的视图控制器的viewDidLoad(),
中let myView = MyView()
let mainViewLet = myView.mainviewlet()
self.view.addSubview(mainViewLet)
myView.createbuttonWith(mainViewLet)