当我的UICollectionView
中的自定义单元格突出显示时,我正在尝试对详细视图控制器执行segue(具有添加的属性)。由于我不能使用来自子类PerformSegue
的{{1}},我对如何实现这一点感到困惑,而我似乎无法从UICollectionViewSource
中获取所选单元格。
这是我到目前为止的简略版本:
收集来源:
UICollectionView
的UIViewController:
public class ProductCollectionDataSource : UICollectionViewSource
{
public ProductCollectionDataSource()
{
Products = new List<FeedItem>();
}
public List<FeedItem> Products { get; set; }
public override void ItemUnhighlighted(UICollectionView collectionView, NSIndexPath indexPath)
{
var cell = (MultiColumnCell)collectionView.CellForItem(indexPath);
cell.Alpha = 1.0f;
// Perform segue here, passing this cell's data...?
}
}
那么,如何根据UICollectionView中选定的单元格触发UIViewController中的segue?
答案 0 :(得分:6)
您可以传入对控制器的引用,然后使用它来执行Segue:
public class ProductCollectionDataSource : UICollectionViewSource
{
WeakReference<DashboardViewController> _dvc;
public List<FeedItem> Products { get; set; }
public ProductCollectionDataSource(DashboardViewController parentVc)
{
Products = new List<FeedItem>();
_dvcRef = new WeakReference<DashboardViewController>(parentVc);
}
public override void ItemUnhighlighted(UICollectionView collectionView, NSIndexPath indexPath)
{
var cell = (MultiColumnCell)collectionView.CellForItem(indexPath);
cell.Alpha = 1.0f;
if (_dvcRef.TryGetTarget(out DashboardViewController dashboardVc){
dashboardVc.PerformSegue("Identifier");
}
}
}
}
答案 1 :(得分:6)
答案 2 :(得分:0)
从ViewController手动搜索到Detail View Controller。 像往常一样设置 - (void)prepareForSegue方法中的Segue。
然后在您认为合适的地方手动调用它:
-(void)yourCall{
[self performSegueWithIdentifier:@"yourSegueIdentifier" sender:self];
}