Ich würde gerne fragen, ob es Beispiele gibt, wie Sie Optionsfelder in einer iPhone-App implementieren können.
Ich finde die Picker-Ansicht für eine einfache Auswahl sehr groß.
Ich bin nicht sicher, ob Apple Optionsfelder absichtlich ausgeschlossen hat und ob es besser ist, einfach eine Picker-Ansicht aus Sicht der Benutzerfreundlichkeit/Benutzererfahrung zu verwenden.
Ich habe einige Gedanken darüber, wie die beste Implementierung von Radioknöpfen aussehen sollte. Sie kann auf der UIButton
-Klasse basieren und den Status "ausgewählt" verwenden, um einen aus der Gruppe anzuzeigen. Die Variable UIButton
verfügt über systemeigene Anpassungsoptionen in IB. Daher ist es bequem, XIBs zu entwerfen. Außerdem sollte es eine einfache Möglichkeit geben, Schaltflächen mithilfe von IB-Ausgangsverbindungen zu gruppieren:
Ich habe meine Ideen in dieser RadioButton Klasse implementiert. Klappt wunderbar:
Versuchen Sie UISegmentedControl . Es verhält sich ähnlich wie Radioknöpfe - stellt eine Reihe von Auswahlmöglichkeiten bereit und lässt den Benutzer auswählen 1.
Ich möchte nur zusammenfassen, es gibt vier Möglichkeiten.
oder öffnen Sie ein neues TableView-Steuerelement mit einem Häkchen:
Hoffe das hilft.
Try DLRadioButton funktioniert sowohl für Swift
als auch für ObjC
. Sie können Bilder auch verwenden, um den Auswahlstatus anzuzeigen oder Ihren eigenen Stil anzupassen.
Schau es dir unter GitHub an.
** Update: Die Option zum Setzen des Auswahlkennzeichens auf der rechten Seite wurde hinzugefügt.
** Update: Quadratische Schaltfläche hinzugefügt, IBDesignable
, verbesserte Leistung.
** Update: Unterstützung für Mehrfachauswahl hinzugefügt.
Für Optionsbildschirme, insbesondere wenn mehrere Funkgruppen vorhanden sind, verwende ich gerne eine gruppierte Tabellenansicht. Jede Gruppe ist eine Funkgruppe und jede Zelle eine Auswahl innerhalb der Gruppe. Es ist trivial, die Zubehöransicht einer Zelle für ein Häkchen zu verwenden, das die gewünschte Option angibt.
Wenn nur UIPickerView etwas kleiner gemacht werden könnte oder die Farbverläufe besser geeignet sind, um zwei Seiten auf einer Seite zu kacheln ...
Ich weiß, dass es sehr spät ist, dies zu beantworten, aber ich hoffe, dass dies jedem helfen kann.
sie können Schaltflächen wie Optionsfelder mit IBOutletCollection
erstellen. Erstellen Sie eine IBOutletCollection-Eigenschaft in unserer .h-Datei.
@property (nonatomic, strong) IBOutletCollection(UIButton) NSArray *ButtonArray;
verbinden Sie alle Schaltflächen mit dieser IBOutletCollection und erstellen Sie eine IBAction-Methode für alle drei Schaltflächen.
- (IBAction)btnTapped:(id)sender {
for ( int i=0; i < [self.ButtonArray count]; i++) {
[[self.ButtonArray objectAtIndex:i] setImage:[UIImage
imageNamed:@"radio-off.png"]
forState:UIControlStateNormal];
}
[sender setImage:[UIImage imageNamed:@"radio-on.png"]
forState:UIControlStateNormal];
}
Ich habe einen Controller geschrieben, um die Logik hinter einer Reihe von Optionsfeldern zu handhaben. Es ist Open Source und auf GitHub, schau es dir an!
-(void)radiobutton:(id)sender
{
ischecked =!ischecked;
UIButton *check = (UIButton*)sender;
if(ischecked == NO)
[check setImage:[UIImage imageNamed:@"checkbox1.png"] forState:UIControlStateNormal];
else
[check setImage:[UIImage imageNamed:@"checkbox-pressed.png"] forState:UIControlStateNormal];
}
Die folgende einfache Methode zum Erstellen eines Optionsfelds in Ihrer iOS-App besteht aus zwei Schritten.
Schritt 1 - Füge diesen Code in dein in viewDidLoad oder in eine andere gewünschte Methode ein
[_mrRadio setSelected:YES];
[_mrRadio setTag:1];
[_msRadio setTag:1];
[_mrRadio setBackgroundImage:[UIImage imageNamed:@"radiodselect_white.png"] forState:UIControlStateNormal];
[_mrRadio setBackgroundImage:[UIImage imageNamed:@"radioselect_white.png"] forState:UIControlStateSelected];
[_mrRadio addTarget:self action:@selector(radioButtonSelected:) forControlEvents:UIControlEventTouchUpInside];
[_msRadio setBackgroundImage:[UIImage imageNamed:@"radiodselect_white.png"] forState:UIControlStateNormal];
[_msRadio setBackgroundImage:[UIImage imageNamed:@"radioselect_white.png"] forState:UIControlStateSelected];
[_msRadio addTarget:self action:@selector(radioButtonSelected:) forControlEvents:UIControlEventTouchUpInside];
Step2- Füge folgende IBAction-Methode in deine Klasse ein
-(void)radioButtonSelected:(id)sender
{
switch ([sender tag ]) {
case 1:
if ([_mrRadio isSelected]==YES) {
// [_mrRadio setSelected:NO];
// [_msRadio setSelected:YES];
genderType = @"1";
}
else
{
[_mrRadio setSelected:YES];
[_msRadio setSelected:NO];
genderType = @"1";
}
break;
case 2:
if ([_msRadio isSelected]==YES) {
// [_msRadio setSelected:NO];
// [_mrRadio setSelected:YES];
genderType = @"2";
}
else
{
[_msRadio setSelected:YES];
[_mrRadio setSelected:NO];
genderType = @"2";
}
break;
default:
break;
}
}