【问题标题】:TableView losing selected row on back in SwiftTableView 在 Swift 中丢失选定的行
【发布时间】:2015-06-22 11:30:05
【问题描述】:

我有一个导航控制器和两个视图控制器ViewController1ViewController2。当这是我设置所选行的代码sn-p时

  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 将是一个理想的候选人。

标签: ios uitableview swift ios8


【解决方案1】:

你可以用viewDidAppear() 来调用你的方法

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

HTH,享受编码!

【讨论】:

  • 谢谢。此外,当ViewController1 被加载时,这是否意味着问题会被调用两次。我应该从 viewDidLoad() 中删除 questions 吗?
  • 最好从viewdidload()中删除,因为最终viewDidAppear()会在每次视图出现时调用该函数,无论是第一次还是第二次都会调用。
【解决方案2】:

viewDidLoad中你正在使用的函数去掉,放到viewDidAppear中。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2014-07-19
    • 1970-01-01
    • 2017-07-04
    相关资源
    最近更新 更多