I am trying to pop a ViewController from a navigationController and send data using a segue programmatically. I cannot seem to successfully transfer the data across to my destination viewController. Below is my code. Please can someone advise on where I am going wrong?
I am trying to get the variable 'segueContainerNewFolderCreatedBool' in the destination viewController to be assigned the value of 'true'. But When the desination viewController loads, in the viewWillAppear() the value of 'segueContainerNewFolderCreatedBool' is always 'false'. I am out of ideas.
Destination viewController:
class menuTableViewController: UITableViewController{
...
var segueContainerNewFolderCreatedBool = false
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
print("self.segueContainerNewFolderCreatedBool : \(self.segueContainerNewFolderCreatedBool)")
} ...
}
Source viewController:
let task = session.dataTask(with: request, completionHandler: { (data, response, error) in
if let jsonData = data{
do{
let jsonObject = try JSONSerialization.jsonObject(with: jsonData, options: [])
guard
let jsonDictionary = jsonObject as? [String:String],
let message = jsonDictionary["msg"] else{
print("unexpected data structure from server")
return
}
if(message == "folder created success"){
// Folder created success
print("folder created success")
// Generate segue to tansfer data - let 'menuTableViewController' know that new
// folder has been created - to update tableView of user folders
let storyBoard: UIStoryboard = UIStoryboard.init(name: "Main", bundle: nil)
let destinationViewController = storyBoard.instantiateViewController(withIdentifier: "landingPage") as! menuTableViewController
let sourceViewController = storyBoard.instantiateViewController(withIdentifier: "createUserFolder") as! CreateNewUserFolderPubMed
let segue = UIStoryboardSegue.init(identifier: "nFolderSegue", source: sourceViewController, destination: destinationViewController, performHandler: {
DispatchQueue.main.async{
destinationViewController.segueContainerNewFolderCreatedBool = true
if let navController = self.navigationController{
navController.popViewController(animated: true)
}
}// End DispatchQueue
})
segue.perform()
}else{
// Folder created fail
}
}catch let error{
print("error detail: \(error)")
}
}else if let requestError = error{
print("print error: \(requestError)")
}else{
print("unexpected error")
}
})
task.resume()