2015-04-16 40 views
1

我有一个导航控制器和连接到它的两个视图控制器ViewController1ViewController2。当这是代码片段,我设置选定行TableView在Swift中丢失选定的行

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() 
} 

现在的问题是,每当我回去从ViewController2ViewController1。我没有得到所选的行。很明显,viewDidLoad()没有被调用。我应该在哪里保存代码,以便questions被称为每当我回去

+0

** viewDidAppear **将成为这种情况下的理想人选。 –

回答

3

您可以致电与viewDidAppear()你的方法一样

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

HTH,享受编码!

+0

谢谢。另外当'ViewController1'被加载时,是否意味着问题会被调用两次。我应该从viewDidLoad()中移除“问题”吗? –

+1

最好从'viewdidload()'中移除,最后'viewDidAppear()'每次查看apear时都会调用该函数,无论是第一次还是第二次,它都会调用。 –

1

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

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

相关问题