Xamarin.iOS
Maak en gebruik aangepaste prototypetabelcellen in xamarin.iOS met behulp van storyboard
Zoeken…
Maak een aangepaste cel met behulp van Storyboard
Open Storyboard waar u uw ViewController met TableView hebt:
Prototype-cel toevoegen (als er nog geen cel is toegevoegd):
Pas de cel naar wens aan (in mijn geval is er aangepaste UIImage en Label):
Vergeet niet om de hoogte van de cel in te stellen. Selecteer hiervoor uw hele TableView en selecteer in het venster Eigenschappen het tabblad "Layout". Bovenaan het eigenschappenvenster zou u "rijhoogte" moeten zien - voer de juiste waarde in:
Selecteer nu opnieuw het prototype van de cel. Typ in het venster Eigenschappen de naam van de klasse (hiervoor wordt code achter klasse gemaakt). In mijn geval is dit "FriendsCustomTableViewCell". Geef daarna "Identifier" voor uw cel. Zoals je kunt zien is mijn "FriendCell". Het laatste dat u moet instellen, is de eigenschap "Stijl" ingesteld op aangepast. Het veld "Naam" moet leeg zijn. Zodra u op "enter" klikt na het typen van "Class", wordt het code-behind-bestand automatisch gemaakt:
Nu moet de code achter de cel er als volgt uitzien:
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;
}
}
In UITableViewSource moet je cellIdentifier bovenaan de klas verklaren (in mijn geval is dit "FriendCell") en in de "GetCell" -methode moet je cellen casten en gegevens voor hen instellen:
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;
}