Swift: Reload a View Controller

2019-03-23 02:27发布

问题:

I need to refresh a view controller when a certain button is tapped. Simply activating viewDidLoad() does not seem to be working for what I need to do. However, when I leave the view controller then come back to it, it seems to work perfectly?

How can I refresh/reload a view controller as if I have left it then come back to it without ever actually leaving it?

回答1:

Whatever code you are writing in viewDidLoad, try to add that in viewWillappear(). I think this will solve your problem.



回答2:

You shouldn't call viewDidLoad method manually, Instead if you want to reload any data or any UI, you can use this:

override func viewDidLoad() {
    super.viewDidLoad();

    let myButton = UIButton()

    // When user touch myButton, we're going to call loadData method
    myButton.addTarget(self, action: #selector(self.loadData), forControlEvents: .TouchUpInside)

    // Load the data
    self.loadData();
}

func loadData() {
    // code to load data from network, and refresh the interface
    tableView.reloadData()
}

Whenever you want to reload the data and refresh the interface, you can call self.loadData()



回答3:

This might be a little late, but did you try calling loadView()?



回答4:

In Swift 4:

self.view.layoutIfNeeded()


回答5:

At any point call when you want to reload viewController's View or any view

<View you want to reload>.setNeedsLayout()
<View you want to reload>.layoutIfNeeded()