Ich muss eine Klasse (aus praktischen Gründen nennen Sie es A) abgeleitet von UITableViewController und eine andere (B) von UICollectionViewController implementieren. Und es gibt viele Gemeinsamkeiten, also möchte ich sie in eine Klasse (C) setzen und A und B erben lassen. Nun haben A und B beide Klassen zu erben, aber mehrfache Vererbung ist in swift nicht erlaubt Wie implementiert man das? Ich weiß, dass es keine schnelle Mehrfachvererbung gibt, aber ich möchte immer noch wissen, wie ich die oben beschriebenen Dinge tun kann.Wie macht man Multi-Vererbung in Swift?
4
A
Antwort
9
Wie in den Kommentaren erwähnt von @ Paulw11 ist richtig. Hier ist ein Beispiel, bei dem A & B erben von C. Was ich DogViewController
und CatViewController
genannt habe (erbt Formular PetViewController
). Sie können sehen, wie ein Protokoll nützlich sein könnte. Dies ist nur ein sehr einfaches Beispiel.
protocol Motion {
func move()
}
extension Motion where Self: PetViewController {
func move() {
//Open mouth
}
}
class PetViewController: UIViewController, Motion{
var isLoud: Bool?
func speak(){
//Open Mouth
}
}
class DogViewController:PetViewController {
func bark() {
self.speak()
//Make Bark Sound
}
}
class CatViewController: PetViewController {
func meow() {
self.speak()
//Make Meow Sound
}
}
//....
let cat = CatViewController()
cat.move()
cat.isLoud = false
cat.meow()
2
Sie können nicht mehrere Vererbung in Swift haben, der Weg zu gehen ist, Protokolle zu betrachten, aber es ist ein ziemlich großes Thema, um in einer Antwort besprochen zu werden.
Es gibt auch viele andere questions mit dem gleichen Umfang
1
Mehrfachvererbung ist in Swift nicht zulässig. Sie können stattdessen jedes Protokoll anpassen. Protokolle sind wie Schnittstellen in Java.
Verwandte Themen
- 1. Swift 3: Wie macht man String-Bereiche?
- 2. Wie macht man Mehrfachauswahl in segmentierter Steuerung in swift?
- 3. Wie macht man eine optionale Schließung in swift?
- 4. Swift: Wie macht man eine UIView in UITableViewCell anklickbar?
- 5. Wie macht man UITableview mit Textfield in swift?
- 6. Wie macht man Fenster in Osx Swift transparent?
- 7. Wie man einen benutzerdefinierten UITextField Platzhalter in Swift 3.0 macht
- 8. xcode 7 swift wie man die Containeransicht transparent macht
- 9. Wie man einen CountDown Timer mit Swift macht
- 10. Swift - Wie man einen Tisch mit Etiketten macht
- 11. Wie macht man View-Controller aktiv mit swift?
- 12. Wie man Datumsumwandlung macht?
- 13. Wie man Zahlenauswahldialog macht?
- 14. wie man Pfeil macht, der in matplotlib Schleifen macht?
- 15. Wie erstellt man verbundene Schieberegler in Swift?
- 16. Wie macht man diese Übung?
- 17. wie man jmeter Ausgabegraphen macht
- 18. Wie macht man RLMResults veränderbar?
- 19. Wie man Wortlänge in swift
- 20. TSQL wie man Unterberechnungen macht
- 21. Wie man Code flexibler macht
- 22. Wie man django Registrierungsformular macht
- 23. Wie man benutzerdefinierte Suchfunktionen macht
- 24. Wie macht man Klassen testbarer?
- 25. Wie macht man Peity-Chart?
- 26. Wie macht man invertierten Index?
- 27. Wie man asymetrische Bildansicht macht
- 28. Wie man diese Zeitfensterabfrage macht?
- 29. Wie man split listview macht
- 30. Wie man Datumszeit so macht?
Lassen Sie C von UIViewController erben und A und B von C erben. Implementieren Sie die Protokolle für Tabellenansicht und Sammlungsansicht wie in A und B erforderlich, und ignorieren Sie nur UITableViewController und UICollectionViewController. Sie sind im Grunde nur Convenience-Klassen sowieso – Paulw11
Mögliche Duplikat von [Warum kann ich nicht von mehreren Klassen in Swift erben wie seine Bibliothek Klassen] (http://stackoverflow.com/questions/25595506/why-i-can-not-inherit -von-multiple-classes-in-swift-genau-wie-seine-Bibliothek-clas) – jalone