Ich muss Kontrollkästchen Steuerelemente zu meinem Formular hinzufügen. Ich weiß, dass es kein solches Steuerelement in iOS SDK gibt. Wie könnte ich das tun?
Antworten
Zu viele Anzeigen?Unterklasse UIButton, legen Sie eine Schaltfläche im View-Controller ab, wählen Sie sie aus und ändern Sie den Klassennamen in CheckBox im Identitätsinspektor.
#import "CheckBox.h"
@implementation CheckBox
#define checked_icon @"checked_box_icon.png"
#define empty_icon @"empty_box_icon.png"
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
[self setImage:[UIImage imageNamed:empty_icon] forState:UIControlStateNormal];
[self addTarget:self action:@selector(didTouchButton) forControlEvents:UIControlEventTouchUpInside];
}
return self;
}
- (void)didTouchButton {
selected = !selected;
if (selected)
[self setImage:[UIImage imageNamed:checked_icon] forState:UIControlStateNormal];
else
[self setImage:[UIImage imageNamed:empty_icon] forState:UIControlStateNormal];
}
@end
Ich habe kürzlich eine gemacht. Frei zu erwerben von GitHub. Sehen Sie, ob este wird helfen. Die Wirkung ist wie
Eine einfache UIButton
Unterklasse kann sich wie ein Kontrollkästchen in Android verhalten.
import UIKit
class CheckedUIButton: UIButton {
var checked: Bool = false {
didSet {
if checked {
setImage(UIImage(systemName: "checkmark.circle"), for: .normal)
} else {
setImage(UIImage(systemName: "circle"), for: .normal)
}
}
}
//initWithFrame to init view from code
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
//initWithCode to init view from xib or storyboard
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
private func commonInit() {
addTarget(self, action: #selector(self.checkedTapped), for: .touchUpInside)
}
@objc
private func checkedTapped() {
self.checked.toggle()
}
}
Ausgabe
(Ungeprüfter Zustand)
(Kontrollierter Zustand)
Eine einfache UIButton-Unterklasse mit SF-Symbolen erfüllt diesen Zweck
class CheckBoxButton: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setup()
}
func setup() {
setImage(UIImage(systemName: "square.fill"), for: .normal)
setImage(UIImage(systemName: "checkmark.square.fill"), for: .selected)
}
}
Storyboard
Wenn Sie Storyboard verwenden, stellen Sie sicher, dass der Schaltflächentyp auf custom
wie auf dem folgenden Bild zu sehen
Verwendung
Alles, was Sie tun müssen, ist das Umschalten der isSelected
Variable in Action/Selector-Methode
@objc func toggle(_ sender: UIButton) {
sender.isSelected.toggle()
}
Demo
- See previous answers
- Weitere Antworten anzeigen