Je dois ajouter des contrôles de case à cocher dans mon formulaire. Je sais qu'il n'y a pas un tel contrôle comme case à cocher dans le SDK IPhone. Comment puis-je faire cela. Donnez-moi quelques idées plz.
Merci d'avance!
Je dois ajouter des contrôles de case à cocher dans mon formulaire. Je sais qu'il n'y a pas un tel contrôle comme case à cocher dans le SDK IPhone. Comment puis-je faire cela. Donnez-moi quelques idées plz.
Merci d'avance!
cela a été me rend fou aussi, et j'ai trouvé une autre solution qui fonctionne bien pour moi, et évite d'avoir à utiliser des images.
Vous voudrez peut-être appeler la togglePaidStatus fonction dans le viewDidLoad fonction pour définir une chaîne vide au départ.
Évidemment, vous pouvez ajouter des contrôles supplémentaires pour empêcher les utilisateurs activation / désactivation de la case à cocher si l'étiquette n'est pas activé, mais ce n'est pas indiqué ci-dessous.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if (CGRectContainsPoint([fullyPaid frame], [touch locationInView:self.view]))
{
[self togglePaidStatus];
}
}
-(void) togglePaidStatus
{
NSString *untickedBoxStr = [[NSString alloc] initWithString:@"\u2610"];
NSString *tickedBoxStr = [[NSString alloc] initWithString:@"\u2611"];
if ([fullyPaid.text isEqualToString:tickedBoxStr])
{
fullyPaid.text = untickedBoxStr;
}
else
{
fullyPaid.text = tickedBoxStr;
}
[tickedBoxStr release];
[untickedBoxStr release];
}
Si vous affichez un groupe d'options et que l'utilisateur peut en sélectionner une, utilisez une vue de tableau avec un accessoire de coche et une couleur de texte différente sur la ligne sélectionnée.
Si vous n'avez qu'une seule option, votre meilleur pari est d'utiliser un interrupteur. Si vous ne pouvez pas ou ne voulez pas, utilisez un bouton, définissant l'image normale sur une case vide et l'image sélectionnée sur une case cochée. Vous devrez créer ces deux images vous-même ou trouver des graphiques en stock à utiliser pour eux.
Je voulais le faire par programme, et également résoudre le problème que la zone touchée était vraiment trop petite. Ceci est adapté de diverses sources, dont Mike et Agha, le commentateur de Mike.
Dans votre en-tête
@interface YourViewController : UIViewController {
BOOL checkboxSelected;
UIButton *checkboxButton;
}
@property BOOL checkboxSelected;;
@property (nonatomic, retain) UIButton *checkboxButton;
-(void)toggleButton:(id)sender;
Et dans votre implémentation
// put this in your viewDidLoad method. if you put it somewhere else, you'll probably have to change the self.view to something else
// create the checkbox. the width and height are larger than actual image, because we are creating the hit area which also covers the label
UIButton* checkBox = [[UIButton alloc] initWithFrame:CGRectMake(100, 60,120, 44)];
[checkBox setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal];
// uncomment below to see the hit area
// [checkBox setBackgroundColor:[UIColor redColor]];
[checkBox addTarget:self action:@selector(toggleButton:) forControlEvents: UIControlEventTouchUpInside];
// make the button's image flush left, and then push the image 20px left
[checkBox setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
[checkBox setImageEdgeInsets:UIEdgeInsetsMake(0.0, 20.0, 0.0, 0.0)];
[self.view addSubview:checkBox];
// add checkbox text text
UILabel *checkBoxLabel = [[UILabel alloc] initWithFrame:CGRectMake(140, 74,200, 16)];
[checkBoxLabel setFont:[UIFont boldSystemFontOfSize:14]];
[checkBoxLabel setTextColor:[UIColor whiteColor]];
[checkBoxLabel setBackgroundColor:[UIColor clearColor]];
[checkBoxLabel setText:@"Checkbox"];
[self.view addSubview:checkBox];
// release the buttons
[checkBox release];
[checkBoxLabel release];
Et mettez cette méthode aussi:
- (void)toggleButton: (id) sender
{
checkboxSelected = !checkboxSelected;
UIButton* check = (UIButton*) sender;
if (checkboxSelected == NO)
[check setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal];
else
[check setImage:[UIImage imageNamed:@"checkbox-checked.png"] forState:UIControlStateNormal];
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.