Je suis en train de préparer de manière pragmatique une tableview avec uitextfields, uisegmentedcontrols, etc.
Voici un exemple
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
//NSLog(@"creating a new %@", CellIdentifier);
if([CellIdentifier isEqualToString:@"ID"]) {
UITextField *newTextField = [[UITextField alloc] initWithFrame:CGRectMake(80, 5, 215, 34)];
self.idField = newTextField;
[cell addSubview:self.idField];
}
}
Je crée des propriétés pour tous ces champs de texte et les affecte aux champs nouvellement créés, comme vous pouvez le voir.
Ma question est: devrais-je utiliser (nonatomique, fort) ou (nonatomique, faible)?
@property(nonatomic, weak) UITextField *idField;
//Or
@property(nonatomic, strong) UITextField *idField;
Réponses:
0 pour la réponse № 1Vous ne devez pas du tout créer de variables de membre pour ces champs de texte. Pour quoi avez-vous besoin d'un deuxième champ de texte? Peut-être qu'un autre style de cellule vous suffit? Par exemple. UITableViewCellStyleValue1
, UITableViewCellStyleValue2
ou UITableViewCellStyleSubtitle
?
Mais si vous en avez besoin, attribuez-lui une balise (par exemple, la ligne de la table tableCellule) et récupérez-la ensuite viewWithTag:
. Si vous voulez un accès direct, pensez à une sous-classe UITableViewCell personnalisée.
Pour donner une réponse directe à votre question: une référence faible suffirait probablement dans la mesure où textField est ajouté à une cellule, qui ne sera désallouée à aucun moment (car il sera réutilisé).