Xamarin.iOS
Создавайте и используйте пользовательские ячейки таблицы прототипов в xamarin.iOS с помощью раскадровки
Поиск…
Создание пользовательской ячейки с помощью раскадровки
Open Storyboard, где у вас есть ViewController с TableView:
Добавить ячейку прототипа (если ранее не было добавлено ячейки):
Настройте ячейку, как вы хотите (в моем случае есть пользовательский UIImage и Label):
Не забудьте установить высоту ячейки. Для этого выберите весь TableView и в окне «Свойства» выберите вкладку «Макет». В верхней части окна свойств вы увидите «высота строки» - поместите соответствующее значение:
Теперь выберите ячейку прототипа еще раз. В окне «Свойства» введите имя класса (он будет создавать для него класс кода). В моем случае это «FriendsCustomTableViewCell». После этого укажите «Идентификатор» для вашей ячейки. Как вы видите, мой «FriendCell». Последнее, что нужно установить, - это свойство «Стиль», настроенное на пользовательский. Поле «Имя» должно быть пустым. После того, как вы нажмете «enter» после ввода «Class», файл с кодом будет автоматически создан:
Теперь код для ячейки должен выглядеть следующим образом:
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;
}
}
В UITableViewSource вы должны объявить cellIdentifier в верхней части класса (в моем случае это «FriendCell»), а в методе «GetCell» вы должны бросать ячейки и устанавливать для них данные:
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;
}