ios - 我如何在 swift 的扩展中声明 NSLayoutConstraint 类型的变量

标签 ios swift uiviewcontroller nslayoutconstraint

我已经为我的 UIViewController 创建了一个扩展,我想声明一些我可以在整个扩展中使用的变量。下面是我的代码

extension UIViewController {

var mssgTopConstraint1: NSLayoutConstraint?
var mssgTopConstraint2: NSLayoutConstraint?
var mssgIconTop1: NSLayoutConstraint?
var mssgIconTop2: NSLayoutConstraint?
var isCheviClicked: Bool = false

}

我有这个错误扩展可能不包含所有五个变量的存储属性。

最佳答案

错误很明显,您不能在扩展中添加存储属性,您只能使用计算属性。

您可以子类化 UIViewController 并在您的自定义类中声明这些属性:

class MyViewController: UIViewController {

    var mssgTopConstraint1: NSLayoutConstraint?
    var mssgTopConstraint2: NSLayoutConstraint?
    var mssgIconTop1: NSLayoutConstraint?
    var mssgIconTop2: NSLayoutConstraint?
    var isCheviClicked: Bool = false    
}

这是一种更简洁的方法,因为使用这些属性扩展 UIViewController 没有太大意义,因为并非所有 Controller 都需要这些属性。

您可以实例化这个新 Controller ,或者在 XIB/Storyboard 中将类名设置为 MyViewController。这样您就可以使用新的 Controller 和新声明的属性。

关于ios - 我如何在 swift 的扩展中声明 NSLayoutConstraint 类型的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52064648/

相关文章:

ios - 如何快速显示来自 UIPreviewAction 的 View Controller

objective-c - iOS 的图像资源

swift - 如何添加ExtensionDelegate到watchOS 1到2升级?

Swift 2 到 3 迁移 String.fromCString

ios - 尝试使用 Card.io-iOS-SDK 扫描卡时应用程序崩溃。

ios - Xcode 11,使用 iOS 10.3.3 设备,设备和模拟器对话框中没有 "Connect via Network"

swift - 运行Kitura Docker Image导致libmysqlclient.so.18错误

ios - Objective-C - 当 iOS 13 深色模式更改时,以编程方式更改 UIViewController 的渐变背景颜色

ios - UITableViewController 在模拟器中显示白色空白屏幕

ios - Swift PresentViewController 关闭键盘