![](/img/trans.png)
[英]Access variable in ViewController from a different class in Swift
[英]Swift : Access variable in ViewController
我有一個帶有按鈕,索引和一個按下按鈕時調用的函數的View Controller,這是代碼示例:
視圖控制器:
func buttonPressed(){
index++
}
然后我有一個我想在其中訪問並從View Controller打印索引的類
類:
print("Index is \(ViewController().index)")
顯然這是行不通的,有人知道我該如何訪問嗎? 我無法真正實例化它,因為它的ViewController以及它都不是相同的索引。
您可以將索引保存到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
你應該:
為index
添加集合public或internal修飾符,以便在類外使用
創建一個ViewController
的實例
從實例檢索index
let vc = ViewController() print("index: \\(vc.index)")
let vc = ViewController()
print("index: \(vc.index)")
不正確,因為vc中沒有viewController,其中包含您單擊的按鈕。 必須再次聲明
以防萬一,您應該擁有一個ViewController單例(例如: viewcontrollerInstall
),並放置在任何地方,以便可以訪問在ViewController
ViewDidLoad
,您可以設置viewcontrollerInstall = self
在您的新課堂電話中:
print("Index is \(viewcontrollerInstall.index)")
嘗試將具有索引和按鈕的視圖控制器的引用傳遞給要訪問它的類。
從那里,您可以訪問該類中該視圖控制器的相同索引值和其他屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.