0
ListView
をカスタマイズしようとしているページが消滅すると、次のエラーが発生します。エラーは、私のオブザーバーは処分されていないと言います。Xamarinフォーム - iOSカスタムレンダラ - オブザーバの廃棄
public class ChatListViewRenderer : ListViewRenderer
{
private IDisposable _onContentSizeChangedObserver;
private IDisposable _onFrameChangedObserver;
protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
{
base.OnElementChanged(e);
if (Control == null) return;
_onContentSizeChangedObserver = Control.AddObserver(new NSString("contentSize"), NSKeyValueObservingOptions.OldNew, OnContentSizeChanged);
_onFrameChangedObserver = Control.AddObserver(new NSString("frame"), NSKeyValueObservingOptions.OldNew, OnFrameChanged);
}
protected override void Dispose(bool disposing)
{
_onContentSizeChangedObserver.Dispose();
_onFrameChangedObserver.Dispose();
base.Dispose(disposing);
}
}
UPDATE
私はListView
を含むページのPageRenderer
のViewWillDisapear
以内にしようとしたが、問題が残っています。
public override void ViewWillDisappear(bool animated)
{
base.ViewWillDisappear(animated);
var listRenderer = Platform.CreateRenderer(((MessagesPage)Element).MessagesList) as ChatListViewRenderer;
listRenderer._onContentSizeChangedObserver.Dispose();
listRenderer._onFrameChangedObserver.Dispose();
}