1
私はUITableViewにデータをロードするためにレルムを使用していますが、UISegmentedControlをナビゲーションのタイトルとして設定しました。しかし、segmentedControlChangedがトリガされると、私のtableViewの何も変化しません。segmentedControlChangedでUITableViewが変更されない
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
}
}
何らかの理由で、アンダースコアを使用して結果を更新すると考えました。私はこのように試してみる。 – Sicypher
いいえ、アンダースコアの使用は、関数呼び出しの戻り値を無視していると不平を言ったときにコンパイラを静かにすることです。 – rmaddy