TableView在Swift中丢失选定的行

时间:2015-04-16 07:37:45

标签: ios uitableview swift ios8

我有一个导航控制器和两个连接到它的视图控制器ViewController1ViewController2。这是我设置所选行的代码片段

  func questions()
  { // Initalizations
   var ns = defaults.integerForKey(qwre)
   let indexPath = NSIndexPath(forRow: ns, inSection: 0)
   self.tableView.selectRowAtIndexPath(indexPath, animated: true, scrollPosition: UITableViewScrollPosition.None)
    }

每次加载ViewController1时,行都会被选中。

这是我的函数viewdidLoad()

override func viewDidLoad() {
questions()
 }

现在问题出在我从ViewController2回到ViewController1的时候。我没有选中该行。显然viewDidLoad()没有被调用。我应该在哪里保留代码,以便每当我回去时都会调用questions

2 个答案:

答案 0 :(得分:3)

您可以使用viewDidAppear()

来调用您的方法
override func viewDidAppear(animated: Bool) {
    questions()
}

HTH,享受编码!!

答案 1 :(得分:1)

删除您在viewDidLoad中使用的功能,并将其放入viewDidAppear

viewDidLoad仅在您创建视图时调用,例如show it,但如果您不会调用pop back viewDidLoad,则会调用viewWillAppear。因此,将该函数放在viewWillAppear中将解决您的问题,并且为了使其仅被调用一次,请将其从viewDidLoad中删除。 希望它有所帮助并使您的概念清晰。