Возможно ли обновить или перерисовать только дополнительные представления в UICollectionView?У меня есть сценарий, в котором я буду обновлять каждый раздел с помощью вставки / удаления строк, на основе которого мне нужно обновить заголовок раздела или так называемые дополнительные представления (в нем есть элемент пользовательского интерфейса, видимость которого зависит от количества элементов).в этом разделе).Так есть ли способ обновить дополнительные представления UICollectionView без необходимости обновлять что-либо еще?
Кроме того, если конкретный раздел не содержит каких-либо данных, мне нужно сделать размер дополнительного представления пустым?
Дополнительный вид:
using System;
using System.Collections.Generic;
using Foundation;
using IpcCommon;
using IpcCommon.Enumerations;
using IpcCommon.Model;
using ObjCRuntime;
using UIKit;
namespace ipc_offline_app.iOS.Portal.CustomCells.Dashboard.Redesign
{
public partial class DashboardHeader : UICollectionReusableView
{
public static readonly NSString Key = new NSString("DashboardHeader");
public static readonly UINib Nib;
private DashCategories _dashboardCategory;
private bool _hideViewAll;
private IShelfItemClickListener _listener;
private string _title;
static DashboardHeader()
{
Nib = UINib.FromName("DashboardHeader", NSBundle.MainBundle);
}
protected DashboardHeader(IntPtr handle) : base(handle)
{
// Note: this .ctor should not contain any initialization logic.
}
public static DashboardHeader CreateCell()
{
var array = NSBundle.MainBundle.LoadNib("DashboardHeader", null, null);
var cell = Runtime.GetNSObject<DashboardHeader>(array.ValueAt(0));
return cell;
}
public void PopulateCell(string title, IShelfItemClickListener listener, bool hideViewAll, DashCategories category = DashCategories.NONE)
{
_title = title;
_dashboardCategory = category;
_listener = listener;
ViewAllButton.Hidden = hideViewAll;
_hideViewAll = hideViewAll;
TitleButton.SetTitle(_title, UIControlState.Normal);
UpdateViewAllVisibility();
}
[Export("awakeFromNib")]
public new void AwakeFromNib()
{
ViewAllButton.Layer.CornerRadius = 5;
ViewAllButton.Layer.BorderWidth = 1;
ViewAllButton.Layer.BorderColor = Utils.ColorFromHex(Colors.SILVER).CGColor;
}
partial void OpenSection(NSObject sender)
{
if (_listener != null && _dashboardCategory != DashCategories.NONE)
_listener.OnShelfItemClicked(_dashboardCategory, IpcCommon.Constants.VIEW_TYPE_GALLERY);
}
public void UpdateViewAllVisibility(Dictionary<DashCategories, List<Assignment>> filteredAssignments = null)
{
if (filteredAssignments != null && filteredAssignments[_dashboardCategory].Count > IpcCommon.Constants.MAX_SECTION_ITEMS)
_hideViewAll = false;
ViewAllButton.Hidden = _hideViewAll;
NSLayoutConstraint trailingConstraint;
if (_hideViewAll)
trailingConstraint = NSLayoutConstraint.Create(TitleButton, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, ViewAllButton, NSLayoutAttribute.Trailing, 1, 0);
else
trailingConstraint = NSLayoutConstraint.Create(TitleButton, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, ViewAllButton, NSLayoutAttribute.Leading, 1, -10);
AddConstraint(trailingConstraint);
LayoutIfNeeded();
LayoutSubviews();
}
}
}