Ich habe mehr TableViewController
Klassen implementiert, die von einem Basis TableViewController
Klassen wie folgt erben:calling Protokoll-Methode, die von der Unterklasse von der Super
class BasicTableViewController: UITableViewController {
}
class SpecificTableViewController: BasicTableViewController {
}
class AnotherSpecificTableViewController: BasicTableViewController {
}
dann ich ein sehr einfaches Protokoll erstellt erfrischende Möglichkeiten des spezifischen hinzufügen Viewcontroller Klassen wie folgt aus:
@objc
protocol Refreshable {
func refresh()
}
meine spezifischen Viewcontroller Klassen das Protokoll wie folgt implementieren:
Die Frage ist jetzt: Was ist die richtige Methode, um die Refresh-Methode von BasicTableViewController
aufzurufen, die selbst nicht dem Protokoll Refreshable
entspricht? Im Moment habe ich so etwas wie dies tue (ohne sicher zu sein, ob es der richtige Weg ist):
class BasicTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let _ = self as? Refreshable {
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(Refreshable.refresh), forControlEvents: .ValueChanged)
self.refreshControl = refreshControl
}
}
}
ganz am Anfang habe ich nicht das Protokoll mit @objc
markieren und versucht, die Wähler so zu bauen: #selector(refresh)
. das hat aber nicht funktioniert. hoffe auf eine Klärung. :)
danke im voraus!
Warum gehst du nicht lassen wollen 'BasicTableViewController' entsprechen' Refreshable'-Protokoll? – luiyezheng
Werfen Sie einen Blick auf meinen Kommentar zu ** riik ** s Lösung. ich möchte nur eine refreshcontrol implementieren, wenn ein viewcontroller das 'Refreshable' Protokoll annimmt. Wenn Sie eine bessere Möglichkeit haben, diesen Check durchzuführen, können Sie ihn gerne präsentieren. :) das ist, was ich gefragt habe ... –