2016-05-06 7 views
0

FFImageLoading ImageServiceクラスのLoadUrlメソッドは、グリッドのデータソースのCreateCellメソッドで呼び出されるため、同期して使用する必要があります。 Xamarin.iOSとC#を使用する。迅速な解決策を評価してください。FFImageLoadingを同期的に使用していますか?

public override IGFlowLayoutViewCell CreateCell(IGFlowLayoutView flowLayoutView, nint index) 
     { 
      IGFlowLayoutViewCell cell = flowLayoutView.DequeueReusableCell("CELL") as IGFlowLayoutViewCell; 
      UIImageView iconImage = new UIImageView(); 

      if (cell == null) 
      { 
       cell = new IGFlowLayoutViewCell("CELL"); 
       cell.ContentInset = new UIEdgeInsets(2, 2, 2, 2); 
       cell.ContentMode = UIViewContentMode.Center; 
       cell.Layer.BorderColor = UIColor.LightGray.CGColor; 
       cell.Layer.BorderWidth = 1; 

       cell.ContentView = iconImage; 

       ImageService.LoadUrl(instrumentImageUrls[index], new TimeSpan(12, 0, 0)) 
          .Into((UIImageView)cell.ContentView,0); 
      } 

      return cell; 
     } 
+2

ないあなたは、私はそれに対して助言することができたとしても、あなたができることを確認して:ここでは、現在のコードがあります。これは、アプリケーションがCreateCellと呼ばれるたびにフリーズすることを意味します。イメージが読み込まれている間に空のビューを表示したくない場合は、プレースホルダを使用するだけです。 –

+0

古典的な文脈で同意する。これは、iPad ProまたはAppleTV上で、ユーザー入力なしで実行されているダッシュボードです。だから問題は残っている。 –

答えて

0
public override IGFlowLayoutViewCell CreateCell(IGFlowLayoutView flowLayoutView, nint index) 
     { 
      IGFlowLayoutViewCell cell = flowLayoutView.DequeueReusableCell("CELL") as IGFlowLayoutViewCell; 
      UIImageView iconImage = new UIImageView(); 

      if (cell == null) 
      { 
       cell = new IGFlowLayoutViewCell("CELL"); 
       cell.ContentInset = new UIEdgeInsets(2, 2, 2, 2); 
       cell.ContentMode = UIViewContentMode.Center; 
       cell.Layer.BorderColor = UIColor.LightGray.CGColor; 
       cell.Layer.BorderWidth = 1; 

       cell.ContentView = iconImage; 

       ImageService.LoadUrl(instrumentImageUrls[index], new TimeSpan(12, 0, 0)) 
          .IntoAsync((UIImageView)cell.ContentView,0).GetAwaiter().GetResult(); 
      } 

      return cell; 
     } 
関連する問題