繁体   English   中英

Swift:变量获取值的顺序错误

[英]Swift: variable gets value assigned in the wrong order

我可能失去了一些东西基本在这里,但我有两个ViewControllers称为ListController (开始VC)和ExamplesController和一个变量叫selectedCell是在宣布ListController那么它的值在改变ListController通过tableView didSelectRowAt indexPath功能基于行的用户点击。 当用户点击一个单元格时,将显示ExamplesController (通过IB中的segue),但是直到我回到ListControllerselectedCell的值才会更改。 因此,现在执行的顺序是:

selectedCell的值初始化为0

用户点击一个单元格(假设索引3)

ExamplesController标题为0

用户回到ListController

selectedCell的值分配为3

这是代码的简化版本。

var selectedCell = 0

class ListController: UIViewController, UITableViewDelegate, UITableViewDataSource{

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        selectedCell = indexPath.row
        print("Tapped on \(selectedCell)")
    }

}


class ExamplesController: UIViewController{

    @IBOutlet weak var chapterTitle: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()        
        chapterTitle.text = "\(chapterTitles[selectedCell])"
    }

}

有什么想法我做错了吗?

您需要从VC本身而不是从单元格钩住segue,并在didSelectRowAt内部使用

self.performSegue(withIdentifer:"SegueName",sender:indexPath.row)

func prepare(for segue: UIStoryboardSegue,sender: Any?)  {  
  if segue.identider == "SegueName"  {
     let des = segue.destination as! ExampleVC
     des.selectedCell = sender as! Int
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM