Swift:ViewController中的Access变量

时间:2016-01-29 07:03:07

标签: ios swift indexing uiviewcontroller

我有一个带有按钮,索引和按下按钮时调用的函数的视图控制器,下面是代码示例:

查看控制器:

func buttonPressed(){

index++

}

然后我有一个类,我想从View Controller

访问和打印索引

类别:

print("Index is \(ViewController().index)")

显然这不起作用,有谁知道我怎么能访问它?我无法真正实例化它,因为它的ViewController以及它不会是同一个索引。我认为。

4 个答案:

答案 0 :(得分:4)

您可以将索引保存到NSUserDefaults或plist文件。尝试使用getter和setter使其自动保留,如下所示:

Xcode 8.3.3•Swift 3.1.1

extension UserDefaults {
    var indexA: Int {
        get {
            return integer(forKey: "indexA")
        }
        set {
            set(newValue, forKey: "indexA")
        }
    }
}

用法:

加载它

let indexA = UserDefaults.standard.indexA

设置/更改

UserDefaults.standard.indexA = 10

答案 1 :(得分:0)

你应该:

  1. index添加set public或internal修饰符,以便在类外使用

  2. 创建ViewController

  3. 的实例
  4. 从实例

    中检索index
    let vc = ViewController()
    print("index: \(vc.index)")
    

答案 2 :(得分:0)

let vc = ViewController()  
print("index: \(vc.index)")

不正确,因为vc中没有viewController,它包含你点击的按钮。它必须再次声明

如果你有一个ViewController单例(例如:viewcontrollerInstall)并放在任何地方,你可以访问 在ViewDidLoad的{​​{1}}中,您设置了ViewController

在你的新课堂电话中:

viewcontrollerInstall = self

答案 3 :(得分:0)

尝试将具有索引和按钮的视图控制器的引用传递给要访问它的类。

从那里开始,您可以访问该类中该视图控制器的相同索引值和其他属性。