Xamarin.iOS
Créer et utiliser des cellules de tableau prototype personnalisées dans xamarin.iOS à l'aide du storyboard
Recherche…
Créer une cellule personnalisée à l'aide de Storyboard
Ouvrez Storyboard où vous avez votre ViewController avec TableView:
Ajouter une cellule prototype (s'il n'y a pas de cellule ajoutée auparavant):
Personnalisez la cellule comme vous le souhaitez (dans mon cas, il y a UIImage et Label personnalisés):
N'oubliez pas de régler la hauteur de la cellule. Pour ce faire, sélectionnez l'intégralité de TableView et, dans la fenêtre Propriétés, sélectionnez l'onglet "Mise en page". En haut de la fenêtre des propriétés, vous devriez voir "Hauteur de ligne" - mettez la valeur appropriée:
Maintenant, sélectionnez à nouveau la cellule prototype. Dans la fenêtre Propriétés, tapez le nom de la classe (elle créera une classe code-behind pour elle). Dans mon cas, il s'agit de "FriendsCustomTableViewCell". Après cela, indiquez "Identifiant" pour votre cellule. Comme vous pouvez voir mon est "FriendCell". La dernière chose à définir est la propriété "Style" définie sur custom. Le champ "Nom" doit être vide. Une fois que vous cliquez sur "enter" après avoir tapé le fichier code-behind "Class", celui-ci sera automatiquement créé:
Maintenant, le code derrière pour la cellule devrait ressembler à ceci:
public partial class FriendsCustomTableViewCell : UITableViewCell
{
public FriendsCustomTableViewCell (IntPtr handle) : base (handle)
{
}
public FriendsCustomTableViewCell(NSString cellId, string friendName, UIImage friendPhoto) : base (UITableViewCellStyle.Default, cellId)
{
FriendNameLabel.Text = friendName;
FriendPhotoImageView.Image = friendPhoto;
}
//This methods is to update cell data when reuse:
public void UpdateCellData(string friendName, UIImage friendPhoto)
{
FriendNameLabel.Text = friendName;
FriendPhotoImageView.Image = friendPhoto;
}
}
Dans UITableViewSource, vous devez déclarer cellIdentifier en haut de la classe (dans mon cas, il s'agit de "FriendCell") et dans la méthode "GetCell", vous devez convertir les cellules et définir les données correspondantes:
string cellIdentifier = "FriendCell";
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
FriendsCustomTableViewCell cell = (FriendsCustomTableViewCell) tableView.DequeueReusableCell(cellIdentifier);
Friend friend = _friends[indexPath.Row];
//---- if there are no cells to reuse, create a new one
if (cell == null)
{ cell = new FriendsCustomTableViewCell(new NSString(cellIdentifier), friend.FriendName, new UIImage(NSData.FromArray(friend.FriendPhoto))); }
cell.UpdateCellData(friend.UserName, new UIImage(NSData.FromArray(friend.FriendPhoto)));
return cell;
}