J'ai deux fichiers Swift: NotificationsViewController et ViewController. Le premier tableau est mis à jour dans le ViewContoller lorsqu'un bouton est activé. J'ai pu imprimer les données mises à jour. Cependant, lorsque je reviens à NotificationsViewController, le tableview n'est pas mis à jour lorsque je tire pour actualiser.
NotificationsViewController:
import Foundation
import UIKit
var firstArray : [String] = ["123","1234"]
class NotificationsViewController: UITableViewController {
var refresher: UIRefreshControl!
var data: [[String]] = [firstArray, ["4","5"]]
func refresh(){
print("refreshed")
self.tableView.reloadData()
self.refresher.endRefreshing()
}
override func viewDidLoad() {
refresher = UIRefreshControl()
refresher.attributedTitle = NSAttributedString(string: "pull to refresh")
refresher.addTarget(self, action: #selector(NotificationsViewController.refresh), forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refresher)
refresh()
super.viewDidLoad()
self.tableView.editing = true
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return data.count
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data[section].count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = UITableViewCell(style: .Subtitle, reuseIdentifier: "tableCell")
cell.textLabel?.text = data[indexPath.section][indexPath.row]
return cell
}
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
data[indexPath.section].removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
}
ViewController:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func button(sender: AnyObject) {
firstArray.append("522")
print(firstArray)
}
}
J'ai essayé this mais cela n'a pas fonctionné aussi.
Mis à jour :
Comment puis-je mettre à jour une valeur de cell.detailTextLabel? .Text qui est basée sur un autre tableau?
Merci d'avance
Un problème:
Après avoir mis à jour le premier tableau. Vous devez également mettre à jour les données. Il n'est pas mis à jour automatiquement. de sorte que votre code puisse ressembler
func refresh(){
data = [firstArray, ["4","5"]]
print("refreshed")
self.tableView.reloadData()
self.refresher.endRefreshing()
}
Retour d'information:
Au lieu d'utiliser une variable en dehors des classes, il vaut mieux utiliser une classe singleton. Cela ressemble à ceci:
class Singleton: NSObject {
static let sharedInstance = Singleton()
var firstArray = []
}
Vous pouvez mettre à jour/récupérer le tableau comme
Singleton.sharedInstance.firstArray