UIView subclassing?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UIView subclassing?

    Ich störe mich ziemlich an folgendem:

    In der Dokumentation sieht es ja so schön intuitiv und simpel aus:

    Quellcode

    1. class Bicycle: Vehicle {
    2. override init() {
    3. super.init()
    4. numberOfWheels = 2
    5. }
    6. }


    Also, muss ich bei einer UIView subclass, bei der ich z.B. einfach nur eine andere Hintergrundfarbe möchte, wirklich DREI init-funktionen implementieren?

    Quellcode

    1. class TestView: UIView {
    2. required init(coder aDecoder: NSCoder) {
    3. fatalError("NSCoding nein Danke... :/"); //oder halt super.init(coder: aDecoder)
    4. }
    5. override init(frame: CGRect) {
    6. super.init(frame: frame);
    7. backgroundColor = UIColor.redColor();
    8. }
    9. override init() { // WARUM geht das nicht ohne??
    10. super.init();
    11. }
    12. }
    Alles anzeigen


    Wenn ich den leeren init weglasse, kann ich nachher keine Objekte ohne Angabe von "frame:" erstellen...

    Ich finde, das muss irgendwie einfacher gehen... ?(

    mfg, T.
  • @Michael: Ich frag mich halt nur, wieso.... :/

    @macmoonshine: Das war nur ein Beispiel :D
    Ich schreib oft kleine UIView-Klassen, anstatt immer im ViewController 10 Zeilen mit view.xxx = yyy; zu haben... Die machen dann natürlich mehr, als nur die Hintergrundfarbe zu ändern, aber oft ist es eben so, dass ich vielleicht zwei oder drei Methoden überschreibe, aber niemals mehr als einen (und zwar den designated) initializer, und auch kein zusätzlicher dazukommt..
  • tedalligator5 schrieb:

    @macmoonshine: Das war nur ein Beispiel :D

    Das habe ich mir schon fast gedacht. ;)

    tedalligator5 schrieb:

    Ich schreib oft kleine UIView-Klassen, anstatt immer im ViewController 10 Zeilen mit view.xxx = yyy; zu haben...

    Dafür ist aber Subclassing nicht da. Eigene Viewklassen brauche ich verhältbismäßig wenig. Das meiste kann doch schon das UIKit. Wenn dich Kilometer von Konfigurationsanweisungen stören, warum verwendest du dann nicht den Interface-Builder?

    tedalligator5 schrieb:

    Die machen dann natürlich mehr, als nur die Hintergrundfarbe zu ändern, aber oft ist es eben so, dass ich vielleicht zwei oder drei Methoden überschreibe, aber niemals mehr als einen (und zwar den designated) initializer, und auch kein zusätzlicher dazukommt..

    Wenn du auf eigene Initializer verzichtest, brauchst du gar keinen zu überschreiben. Inspectables sind übrigens in diesem Zusammenhang eine extrem nette Geschichte. ;)
    „Meine Komplikation hatte eine Komplikation.“