0

カスタム要素を持つ MonoTouch.Dialog ビュー コントローラーがあります。私の要素は IImageUpdated を実装しています。GetCell メソッドでは、画像を読み込んでいます...

    var logo = ImageLoader.DefaultRequestImage (new Uri (url), this);
    if (logo == null) {
        cell.ImageView.Image = _defaultImage;
    } else {
        cell.ImageView.Image = logo;
    }

    #region IImageUpdated implementation

    public void UpdatedImage (Uri uri)
    {
       // HOW DO I GET THE CELL HERE?
       //cell.ImageView.Image = ImageLoader.DefaultRequestImage(uri, this);
    }

#endregion

UpdatedImage コールバックで、正しいセルにアクセスして画像を更新するにはどうすればよいですか?

4

2 に答える 2

0

UITableViewCellのように をサブクラス化することをお勧めしますImageCell : UITableViewCell。次に、UIView( ImageCellView : UIView, IImageUpdate) を継承して を実装するクラスを作成しますIImageUpdated。その中GetCell()で、セルのインスタンスを返し、ID などをセルに渡します。ImageCellViewインスタンスがセルの に追加されますContentView。次に、各ビューは何をロードし、何を更新するかを適切に認識し、すべてがカプセル化されている必要があります。

Miguel の TweetStation コードで例を確認できます: https://github.com/migueldeicaza/TweetStation/blob/master/TweetStation/UI/TweetCell.cs#L216

于 2012-11-13T20:10:51.490 に答える
0

Krumelurの答えが好きです。

とはいえ、これは良い観察です。要素は、どの時点でもアクティブなセルを持っていない可能性があります。このような場合、要素がまだ画面に表示されていないことを意味します。

セルが要求されたときにできることの 1 つは、セルをフィールドとして保存し、後でアクセスすることです。ただし、トリックは、画像が表示されるまでに (今から 30 秒後など)、要素が画面の外に出て、セルが無効になる可能性があるため、他の誰かのセルを更新することになります。そのため、そのセルがまだ要素にリンクされていることを追跡し、手動で処理する必要があります。

于 2012-11-14T17:40:52.113 に答える