2016-05-27 14 views
0

と呼ばれていません。ナビゲーションコントローラにアクセスできます。これには2つのContainerViewがあり、1つはサイドペインとして、もう1つはメインコンテンツとして使用されます。私は必要なときに、このメインのコンテンツコンテナに物を入れ替えるつもりです。はなぜカスタムUICollectionViewControllerのgetcellをメソッドは、私はそうのように設定ストーリーボードを持って

このコンテナに表示したいものの1つは、サイドペインから選択すると、人々を表示するセルのCollectionViewです。各セルには写真とその人の詳細があります。

私がCollectionViewで見つけたベストコード例は、Xamarin StateRestorationサンプルプロジェクトです。ストーリーボードが含まれています。私は自分の具体的なストーリーボードの周りに取り組んでいる最善の方法でレシピに従ってきました。

今ではという問題は、CollectionViewの各セルにデータを埋め込むために使用されたGetCell(UICollectionView collectionView, NSIndexPath indexPath)メソッドが呼び出されていないことです。私が知る限り、私はCollectionViewControllerのDatasourceプロパティをインスタンス化するはずです。私はこれをAppDelegateと自分のCollectionViewController自体のViewDidLoadで試してみましたが、GetCellはまだ呼び出されていません。どうしてこれなの?

ご協力いただきましてありがとうございます。より多くの情報が必要な場合は編集を依頼してください。

+0

UICollectionViewのデリゲートプロパティも設定しましたか? – kyurkchyan

+0

私はそうは思わない。これがサンプルプロジェクトでどのように行われたかは分かりませんでした。私が試してみるために、これを行う方法を提案できますか? – Chucky

答えて

1

データソースとデリゲートの両方を設定する必要があります。あなたが言及したように、データソースを設定しました。デリゲートをxcodeでストーリーボードを開くように設定するには、UICollectionViewを選択し、親ビューコントローラにドラッグします。このgifを見てください。あなたはまた、プログラムでこれを行うことができます

enter image description here

はまた、あなたがあなたのターゲット・ビュー・コントローラ

public partial class DetailViewController : UIViewController, IUICollectionViewSource 
    { 

     protected DetailViewController(IntPtr handle) : base(handle) 
     { 
      // Note: this .ctor should not contain any initialization logic. 
     } 


     public nint GetItemsCount(UICollectionView collectionView, nint section) 
     { 
      return 10; 
     } 

     public UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath) 
     { 
      var cell = collectionView.DequeueReusableCell("PersonCell", indexPath) as UICollectionViewCell; 
      return cell; 
     } 
    } 

EDIT 1にIUICollectionViewSourceインターフェイスを実装してください。ストーリーボードを入力し、ウィジェットのプロパティでUICollectionView - PersonCollectionの名前を設定します。次に、ビューコントローラの上書きViewDidLoadの背後にあるコードでは、このことができます

public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 
      PersonCollection.WeakDataSource = this; 
      PersonCollection.WeakDelegate = this; 
     } 

希望をWeakDelegateWeakDataSource(私たちは間違いなく、iOS用の循環参照とメモリリークを作成したくないので、弱)に設定!

+0

Xamarinでこれを行うにはどうすればいいですか? – Chucky

+0

Windows Visual Studioを使用していますか? – kyurkchyan

+0

はい。 Ctrlキーとドラッグはドキュメントのアウトラインでは機能しません。 – Chucky

関連する問題