ios - 如何在 View Controller 之外的类中创建 UI 元素

标签 ios swift class cocoa-touch

我正在制作应用程序,我正在尝试制作一个包含带有问题的标签的 View 。我想在我的应用程序中使用这个 View ,因为我会反复使用它,所以我做了一个类(如果我想做一些改变,我可以从一个地方做)。 UIView 称为 questionView (var questionView = UIView())。问题是当我想让 questionView 成为 view 的 subview 时。该错误说我没有我理解的“ View ”。我没有 View ,但我怎样才能得到它?谢谢

这是我的问题类中的内容:

import Foundation
import UIKit

class Question {

    // PROPERTIES:

    var questionLabel = UILabel()
    var questionView = UIView()

    // METHODS:

    func createQuestion (input:String) {

        // some code .... not important

        // THIS:
        self.view.addSubview(questionView)

    }

    // ... next code, also not important
}

更新:

这是我的解决方案。它有效,但我认为从编程的角度来看它是不正确的。有人可以告诉我任何相关信息吗?谢谢

我的类(class)在单独的 swift 文件中:

我的类(class)在单独的 swift 文件中:

class LabelClass {

    var view = UIView()

    init (view: UIView) {
        self.view = view
    }

    var lbl = UILabel()
    var lblView = UIView()

    func makeLabel () {

        self.lbl.frame = CGRectMake(0, 0, 150, 50)
        self.lbl.text = "Text text text"
        self.lbl.numberOfLines = 0

        self.lblView.frame = CGRectMake(20, 20, 150, 50)

        self.lblView.addSubview(self.lbl)
        self.view.addSubview(lblView)

    }

}

我的 ViewController.swift 的一段代码:

override func viewDidLoad() {
    super.viewDidLoad()

    // Added code:
    var object = LabelClass(view: self.view)
    object.makeLabel()

}

最佳答案

我不了解 Swift,但据我所知,只有 UIViewController 的实例有一个 view 属性,类 Question没有,所以你不能向它添加 subview 。 您可能想要创建一个包含问题标签的 UIView 的子类,或者将 questionLabel 添加为 questionView 的 subview 。

关于ios - 如何在 View Controller 之外的类中创建 UI 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30933018/

相关文章:

按钮元素上的 HTML 多个类

ios - 每个主机的最大并发 Http 连接数,Alamofire?

ios - SwiftUI 未将自定义字体应用于选项卡式 View

ios - 消耗品 - 此应用内购买已被购买。它将免费恢复

swift - 将字符集转换为字符串或数组或字符集

php - 在 PHP 中实例化类实例的不同方法

c++ - 如何在 C++ 中通过引用调用一个类的变量

ios swift - 以编程方式更新约束

ios - Apple Watch 上的 SpriteKit - 如何呈现场景?

ios - 如何在 iOS 的触地得分上添加不透明度?