[英]Singleton Class not updating properly
我有一個collectionViewController和一個普通的viewcontroller。 輕按一個單元格時,它會轉到VC,並將標簽設置為所輕按的單元格。 為此的變量在單例類中。
我遇到的問題是,當您第一次點擊一個單元格並轉到VC時,標簽沒有顯示任何內容(但是控制台會打印正確的數據)。 然后,您回到collectionView並點擊另一個單元格,視圖中的標簽現在顯示您之前點擊的單元格 。
我嘗試清潔構建文件夾等,但未執行任何操作。 我還嘗試了另一種方法- let CVC = CollectionViewController()
然后lbl.text = CVC.cellTapped
(首先創建var),但是那也不起作用。
SharingManager.swift
class SharingManager {
var cellChoose = String()
static let sharedInstance = SharingManager()
}
CollectionViewController.swift
class CollectionViewController: UICollectionViewController {
let sm = SharingManager.sharedInstance
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 3
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath)
// Configure the cell
let lbl = cell.viewWithTag(1) as! UILabel
lbl.text = String(indexPath.row)
return cell
}
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
sm.cellChoose = "cell\(indexPath.row)"
print(sm.cellChoose)
}
}
VC2.swift ( 查看控制器 輕按單元格即可進入)
class VC2: UIViewController {
let sm2 = SharingManager.sharedInstance
@IBOutlet weak var lbl2: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.lbl2.text = sm2.cellChoose
//print(sm2.cellChoose)
}
由於您正在通過segue導航,因此有可能在調用didSelectItem
之前加載了新的ViewController
。 將lbl2.text = sm2.cellChoose
移動到viewWillAppear
將解決您的問題。
使用segues的“正確”方法是在prepareForSegue
處理此問題,但是您現在所擁有的將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.