Dans mon application j'ai besoin d'afficher la valeur du badge en fonction du nombre d'éléments du panier et j'ai implémenté les lignes ci-dessous dans le contrôleur de vue dont j'obtiens les données avec json et la valeur du badge ne se chargeait pas et ne pas mettre à jour la valeur après la suppression et la valeur du badge ne s'affichait pas au début de l'application car je suis nouveau à swift 3 je ne sais pas où l'implémenter quelqu'un peut-il m'aider à résoudre le problème?comment mettre à jour la valeur du badge lors du chargement de l'application?
let appDelegate = UIApplication.shared.delegate as! AppDelegate
func downloadJsonWithURL() {
let url = NSURL(string: urlString)
URLSession.shared.dataTask(with: (url as URL?)!, completionHandler: {(data, response, error) -> Void in
if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary {
// print(jsonObj!.value(forKey: "Detail"))
self.itemsArray = (jsonObj!.value(forKey: "Detail") as? [[String: AnyObject]])!
print(self.itemsArray.count)
OperationQueue.main.addOperation({
self.tableDetails.reloadData()
let key = "productPrice"
for array in self.itemsArray{
if let value = array[key] {
let cart = String(describing: value)
let endIndex = cart.index(cart.endIndex, offsetBy: -2)
let truncated = cart.substring(to: endIndex)
self.totalcartPrice.append(truncated)
print(self.totalcartPrice)
var sum = 0.00
for numbers in self.totalcartPrice{
sum += Double(numbers)!
}
print(sum)
self.increment = Int(sum)
self.total = String(sum) + "0KD"
let tabItems = self.tabBarController?.tabBar.items as NSArray!
let tabItem = tabItems?[1] as! UITabBarItem
self.appDelegate.badgeValue = String(Int(self.itemsArray.count))
}
}
})
}
}).resume()
}
func deleteButtonAction(button : UIButton) {
let buttonPosition = button.convert(CGPoint(), to: tableDetails)
let index = tableDetails.indexPathForRow(at: buttonPosition)
self.itemsArray.remove(at: (index?.row)!)
self.tableDetails.deleteRows(at: [index!], with: .automatic)
tableDetails.reloadData()
let tabItems = self.tabBarController?.tabBar.items as NSArray!
let tabItem = tabItems?[1] as! UITabBarItem
self.appDelegate.badgeValue = String(Int(self.itemsArray.count))
if (tableView(tableDetails, numberOfRowsInSection: 0) == 0){
tableDetails.isHidden = true
emptyView.isHidden = false
}
}
comment passer la valeur à cette classe? –
vous pouvez essayer ceci pour passer la valeur https://stackoverflow.com/questions/15049924/passing-data-from-app-delegate-to-view-controller –
ce lien est pour passer des données de l'application délégué pour voir le contrôleur, mais ici J'ai besoin d'envoyer les données du contrôleur de vue au délégué de l'application est-ce le même processus que j'ai besoin d'utiliser? @Vinod Kumar –