我创建了一个新的 Swift-file
,其中包含一个函数,该函数应该添加一些 UILabels
、UITextFields
和一个 UIButton
到 viewcontroller
。
当此代码在 ViewController
中时它可以工作,但在单独的文件中我收到一些错误消息:
class InitialiseLabels {
func setupLabels() {
// multiple variables are declared without problems, but then:
let viewWidth = view.frame.width // Use of unresolved identifier 'view'
let viewHeight = view.frame.height // Use of unresolved identifier 'view'
view.addSubview(myLabel) // Use of unresolved identifier 'view'
// etcetera
myTextField.delegate = self as" UITextFieldDelegate // Use of unresolved identifier 'self'
view.addSubview(myTextField) // Use of unresolved identifier 'view'
}
}
我想我应该在 View 前面添加一些东西来指定它应该去哪里(比如 self.view
但那个显然不起作用,这个 ViewController
也不起作用)。有人可以帮帮我吗?
最佳答案
您的问题“如何在 Swift 的单独类中使用函数时添加 View ?”的简短回答是“不要那样做”。
您应该将 View Controller 的 View 视为私有(private)的。 View Controller 应对它们负责。
如果您真的想让外部对象向您的 View Controller 添加 View (同样,您不应该这样做),您需要引用另一个 View Controller 。创建一个将新 View 作为参数并为调用者添加它们的函数会更清晰:
public func addViewdToContent(_ views: [UIView])
然后从另一个对象,你需要一个对该 View Controller 的引用:
let otherViewConroller = //code to somehow get the other view controller.
let contentView = otherViewConroller.view
let viewWidth = contentView.frame.width
let viewHeight = view.frame.height
otherViewConroller.addViewToContent([myLabel]
您的下一行没有任何意义,您收到的错误也没有意义。让其他对象成为 View Controller View 的委托(delegate)是一个非常糟糕的主意。将需要委托(delegate)的文本字段之类的 View 注入(inject)到另一个 View Controller 中也是一个坏主意。
myTextField.delegate = self as" UITextFieldDelegate // makes no sense
关于ios - 如何在 Swift 的单独类中使用函数时添加 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52536674/