2015-03-09 1 views
0

J'ai deux cellules prototypes. La plupart des interfaces utilisateur sont identiques sauf que l'une a une vue d'image et l'autre pas. La situation est celle de cellForRowAtIndexPath, lorsque je définis la valeur pour les étiquettes de ces cellules. Je dois les placer chaque fois dans deux cellules. Puis-je les définir une seule fois et définir uniquement l'image pour la cellule a seulement une vue de l'image?Ne définissez la valeur qu'une seule fois lorsque deux cellules de la vue table ont la plupart du temps les mêmes composants.

Par exemple:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let place = places[indexPath.row] as Place if indexPath.row == 0 { let cell = tableView.dequeueReusableCellWithIdentifier("ImageCell", forIndexPath: indexPath) as ImageCell cell.nameLabel = names[indexPath.row] cell.screeNameLabel = screenNames[indexPath.row] cell.createAtLable = place.createdAt.shortTimeAgoSinceNow() cell.profileImageView.hnk_setImageFromURL(imageURL) return cell } else { let cell = tableView.dequeueReusableCellWithIdentifier("BaseCell", forIndexPath: indexPath) as BaseCell cell.nameLabel = names[indexPath.row] cell.screeNameLabel = screenNames[indexPath.row] cell.createAtLable = place.createdAt.shortTimeAgoSinceNow() return cell } }

Comme vous pouvez le voir, les deux cellules ont la même nameLabel, screeNameLabel, createAtLable. Comment dois-je seulement les définir une fois? Le code ci-dessus n'est qu'un exemple. Mon projet actuel, j'ai beaucoup d'ui dans les cellules et ils sont fondamentalement les mêmes sauf que l'un a une image et l'autre pas.

Et au fait, quel est le meilleur moyen pour cette situation. Lorsqu'une cellule contient la plupart des mêmes composants, seuls quelques composants sont différents. Utilisez-vous plusieurs cellules prototypes de la meilleure façon?

+0

cellule de sous-classe ajouter un drapeau booléen et vérifier – amar

+0

@amar Je sais comment le vérifier Il n'est pas nécessaire d'ajouter un drapeau de livre A isKindOfClass ferait.Le véritable problème est de savoir comment définir la valeur pour une cellule différente une seule fois –

+0

Vous pouvez résoudre le problème par mise en page automatique. le même prototype de cellule: ce que vous devez faire est de régler la hauteur de l'image sur "supérieur ou égal à 0" si vous voulez la laisser se développer en fonction d'une image différente. la hauteur et la largeur de contenu rinsic augmentera ou rétrécira en fonction de ce que vous chargez. –

Répondre

1

Vous pouvez résoudre la mise en page automatique. Vous pouvez utiliser le même prototype de cellule. Ce que vous devez faire est de régler la hauteur de l'image sur "supérieur ou égal à 0" si vous voulez l'agrandir en fonction de la hauteur de l'image ou "inférieure ou égale à une constante si vous voulez que la hauteur de l'image soit Étant donné que la taille et la largeur du contenu intrinsèque d'imageView sont augmentées ou réduites en fonction de ce que vous chargez, la clé est de faire en sorte que la hauteur de l'image soit 0.