TableView 在 Swift 中丢失选定的行
TableView losing selected row on back in Swift
我有一个导航控制器和两个与之相连的视图控制器ViewController1
和ViewController2
。当这是我设置所选行的代码片段时
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
中删除。
希望对你有所帮助,让你的概念更清晰。
我有一个导航控制器和两个与之相连的视图控制器ViewController1
和ViewController2
。当这是我设置所选行的代码片段时
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
中删除。
希望对你有所帮助,让你的概念更清晰。