UICollectionViewDelegateFlowLayout hat eine Methode namens sizeForItem (GetSizeForItem in MonoTouch).Wie kann ich die GetSizeForItem-Implementierung in UICollectionViewController bereitstellen?
Aber ich stelle den Delegaten nicht explizit zur Verfügung - stattdessen erben ich von UICollectionViewController.
Sie mischt die Datenquelle und die Delegatfunktionalität, verfügt jedoch nicht über diese Methode zum Überschreiben.
Ich habe versucht, diese zu meinen Controller:
[Export ("collectionView:layout:sizeForItemAtIndexPath:")]
public virtual SizeF GetSizeForItem (UICollectionView collectionView, UICollectionViewLayout layout, NSIndexPath indexPath)
{
return new SizeF (100, 100);
}
und es wurde nie genannt.
Wie stelle ich diese Methode zur Verfügung, ohne Trennung von Delegaten und Datenquelle zu verwenden?
Sie können nicht. In Obj-C kann das Datenquellenobjekt das Delegate-Protokoll übernehmen. Dies ist in Monotouch nicht möglich. – svn
@svn: Also die einzige Lösung ist, den Controller loszuwerden und Datenquelle zu verwenden und delegieren stattdessen? Wenn dies der Fall ist, bitte posten Sie es als Antwort, damit ich es akzeptieren kann. –
Sie könnten benutzerdefinierte Delegaten und Datenquellen innerhalb Ihres untergeordneten Controllers definieren und zuweisen. Auf diese Weise können Sie einfach Ihren benutzerdefinierten Controller von außen verwenden und intern Ihre benutzerdefinierten Delegaten verwenden. – svn