Xamarin.iOS
Skapa och använda anpassade prototyptabellceller i xamarin.iOS med hjälp av storyboard
Sök…
Skapa anpassad cell med Storyboard
Öppna Storyboard där du har din ViewController med TableView:
Lägg till prototypcell (om det inte finns någon cell till förut):
Anpassa cellen som du vill (i mitt fall finns det anpassad UII-bild och etikett):
Kom ihåg att ställa in höjden på cellen. För att göra det väljer du hela TableView och väljer fliken "Layout" i Egenskapsfönstret. På toppen av egenskaperfönstret ska du se "radhöjd" - lägg rätt värde:
Välj nu prototypcell igen. I fönstret Egenskaper skriver du klassens namn (det skapar kod bakom klassen för det). I mitt fall är detta "FriendsCustomTableViewCell". Därefter ange "Identifierare" för din cell. Som ni kan se är min "FriendCell". Det sista att ställa in är "Style" -egenskapen som anpassad. Fältet "Namn" bör vara tomt. När du klickar på "enter" efter att du har skrivit "Class" skapas koden bakom filen automatiskt:
Nu ska koden bakom för cellen se ut nedan:
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;
}
}
I UITableViewSource måste du förklara cellIdentifier längst upp i klassen (i mitt fall är det "FriendCell") och i "GetCell" -metoden måste du kasta celler och ställa in data för dem:
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;
}