TableView 在 Swift 中丢失选定的行

TableView losing selected row on back in Swift

我有一个导航控制器和两个与之相连的视图控制器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

您可以使用 viewDidAppear() 来调用您的方法,例如

override func viewDidAppear(animated: Bool) {
    questions()
}

HTH,享受编码吧!

删除您在 viewDidLoad 中使用的函数并将其放入 viewDidAppear

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