Die Cocoa-Frameworks verwenden den Ansatz, dass das Object Composition-Muster geeigneter ist als die traditionelle Klassenhierarchie.
Im Allgemeinen bedeutet dies, dass es wahrscheinlich eine Eigenschaft in UIButton gibt, in der Sie ein anderes Objekt für die verschiedenen Aspekte der Schaltfläche festlegen können. Dies ist die bevorzugte Methode, um die Funktionsweise Ihrer Schaltfläche anzupassen.
Einer der Hauptgründe für dieses Muster ist, dass viele Bibliothekskomponenten Schaltflächen erstellen und nicht wissen, dass sie Instanzen Ihrer Unterklasse erstellen sollen.
bearbeiten, Ihre eigene Factory-Methode
bemerkte ich Ihren Kommentar oben über Zeit zu sparen, wenn Sie die gleiche Taste Config über viele Tasten in Ihrer Anwendung haben. Dies ist ein guter Zeitpunkt, um das Factory Method-Designmuster zu verwenden, und in Objective-C können Sie implement it with a Category, so dass es direkt auf UIButton verfügbar ist.
@interface UIButton (MyCompanyFactory)
+(UIButton *) buttonWithMyCompanyStyles;
@end
@implementation UIButton
+(UIButton *) buttonWithMyCompanyStyles {
UIButton *theButton = [UIButton buttonWithType:UIButtonTypeCustom];
// [theButton set...
return theButton;
}
@end
Was ist der Grund für die Unterklasse eines UIButton? Geben Sie den Knopftyp "benutzerdefiniert" an. Was braucht es noch? –
Ich fragte mehr nur, wenn ich in der Zukunft Unterklasse werden möchte, warum ich es nicht tun sollte. Aber im Moment werde ich ungefähr 20 Knöpfe in meiner App haben, die den gleichen Hintergrund, die gleiche Schriftart, die gleiche Füllhöhe haben. Also wollte ich gleich etwas Zeit und Code durch Unterklassen erstellen. – KKendall
Es gibt keinen Grund, warum Sie UIButton nicht ableiten können. Tatsächlich mache ich es, damit ich IB verwenden kann, um das Aussehen meines Knopfes zu definieren. Warum? Designflexibilität Viele Menschen haben UIButton subclassiert. Ich habe UIButton subclassiert. Dieser Glaube, den es nicht kann, wiederholt sich, aber es fehlt ihm der Beweis. –