Ceci est quelque chose que j'ai jamais été en mesure d'obtenir mon cerveau autour ...instancier un montant fixe d'objets uniques à partir d'une seule méthode
Disons que je suis la construction d'une grille de 8 UIViews large par 8 UIViews haute. Il pourrait par tout x, y ensemble. Il ne doit pas être 8 x 8. Soyons juste arbitraires et tenons-nous-y pour l'instant.
Cette méthode d'initialisation (partie d'une sous-classe de UIView) génère une ligne 8 UIViews large:
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
int x = 1;
int y = 1;
//row 01
UIView* row01Square01 = [[UIView alloc] initWithFrame:CGRectMake((0*x), (0*y), x, y)];
[self addSubview:row01Square01];
UIView* row01Square02 = [[UIView alloc] initWithFrame:CGRectMake((1*x), (0*y), x, y)];
[self addSubview:row01Square02];
UIView* row01Square03 = [[UIView alloc] initWithFrame:CGRectMake((2*x), (0*y), x, y)];
[self addSubview:row01Square03];
UIView* row01Square04 = [[UIView alloc] initWithFrame:CGRectMake((3*x), (0*y), x, y)];
[self addSubview:row01Square04];
UIView* row01Square05 = [[UIView alloc] initWithFrame:CGRectMake((4*x), (0*y), x, y)];
[self addSubview:row01Square05];
UIView* row01Square06 = [[UIView alloc] initWithFrame:CGRectMake((5*x), (0*y), x, y)];
[self addSubview:row01Square06];
UIView* row01Square07 = [[UIView alloc] initWithFrame:CGRectMake((6*x), (0*y), x, y)];
[self addSubview:row01Square07];
UIView* row01Square08 = [[UIView alloc] initWithFrame:CGRectMake((7*x), (0*y), x, y)];
[self addSubview:row01Square08];
}
return self;
}
est-il possible d'écrire une méthode qui pourrait utiliser ce code (avec des modifications de bien sûr) pour générer les 7 rangées suivantes d'UIViews? Mieux encore, est-il possible d'utiliser 1 ligne pour générer toutes les 64 vues UI?
J'ai expérimenté avec une boucle for, while, do, mais j'avoue que je suis complètement perdu quand il s'agit de savoir si vous pouvez ou non passer une chaîne comme argument à une méthode init.
Merci d'avance pour tout renseignement à ce sujet.
Gardez à l'esprit que vous aurez également besoin de libérer les UIViews après les ajouter. –