Сначала вы можете объявить переменную-член в вашем ViewController
public NSIndexPath selectedIndex ;
Затем есть два способа передать этот индекс в родительский UIViewController.
Во-первых, вы можетереализовать метод UICollectionViewDataSource
и UICollectionViewDelegate
в ViewController.И установить значение элемента при выборе элемента. Ссылка на следующий код:
public partial class ViewController : UIViewController,IUICollectionViewDataSource,IUICollectionViewDelegate
.,,
public override void ViewDidLoad()
{
base.ViewDidLoad();
cusLabel.Frame = new CGRect(50, 50, 100, 30);
cusLabel.BackgroundColor = UIColor.Gray;
CustomColllectionView.RegisterClassForCell(typeof(newCustomCollectionViewCell), newCustomCollectionViewCell.CellID);
CustomColllectionView.WeakDataSource= this;
}
public override void ItemSelected(UICollectionView collectionView, NSIndexPath indexPath)
{
…
this. myIndexPath= NSIndexPath.FromRowSection(indexPath.Row, indexPath. Section);
}
Если вы хотите реализовать метод UICollectionViewDataSource
и UICollectionViewDelegate
в одном классе.Передайте ваш ViewController в качестве параметра при инициализации источника.
В вашем newCustomCollectionSource.cs
private xxxViewController(your ViewController’s name) viewController;
public newCustomCollectionSource( xxxViewController viewController,…(other parameters) )
{
. . .
this. viewController= viewController;
. . .
}
И установите значение элемента при выборе элемента, как указано выше:
public override void ItemSelected(UICollectionView collectionView, NSIndexPath indexPath)
{
…
this.viewController.myIndexPath= NSIndexPath.FromRowSection(indexPath.Row, indexPath. Section);
}
В вашем ViewController:
CustomColllectionView.Source = new newCustomCollectionSource (this, imageLocations);
Вы можете получить индексвыделенная ячейка, такая же как myIndexPath.Row
, myIndexPath. Section
в вашем ViewController.