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?
Whatever code you are writing in viewDidLoad
, try to add that in viewWillappear()
. I think this will solve your problem.
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()
This might be a little late, but did you try calling loadView()
?
In Swift 4:
self.view.layoutIfNeeded()
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()