Ich verwende Realm, um Daten in mein UITableView zu laden, und ich habe ein UISegmentedControl als Titel in meiner Navigation eingestellt; aber wenn segmentedControlChanged ausgelöst wird, ändert sich nichts in meiner TableView.UITableView ändert sich nicht bei segmentedControlChanged
var productViewSegmentedControl: UISegmentedControl? = nil
let realm = try! Realm()
var allProducts : Results<Product>?
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if allProducts == nil {
allProducts = realm.objects(Product.self).sorted(byKeyPath: "basedescription")
}
if productViewSegmentedControl == nil {
let segmentedControlItems = ["List", "Brands", "Categories"]
productViewSegmentedControl = UISegmentedControl(items: segmentedControlItems)
productViewSegmentedControl?.selectedSegmentIndex = 0
self.navigationItem.titleView = productViewSegmentedControl
productViewSegmentedControl?.addTarget(self, action: #selector(OrderFormViewController.segmentedControlChanged(_:)), for:.allEvents)
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func segmentedControlChanged(_ segControl: UISegmentedControl){
switch segControl.selectedSegmentIndex{
case 0:
_ = allProducts?.sorted(byKeyPath: "basedescription")
tableView.reloadData()
case 1:
_ = allProducts?.sorted(byKeyPath: "itembrand")
tableView.reloadData()
case 2:
_ = allProducts?.sorted(byKeyPath: "itemtype")
tableView.reloadData()
default: break
}
}
Aus irgendeinem Grund, dachte ich, die Verwendung des Unterstrichs aktualisiert die Ergebnisse. Ich werde es auf diese Weise versuchen. – Sicypher
Nein, die Verwendung des Unterstrichs dient dazu, den Compiler zu beruhigen, wenn er beschwert, dass Sie den Rückgabewert des Funktionsaufrufs ignorieren. – rmaddy