4

我已将 IMvXModelTouchView 用于自定义弹出屏幕动画。而且,我在这个弹出视图上有一个关闭按钮。切换回先前视图的正确方法是什么?

这是我的代码:

public class PopupView 
     : MvxViewController, IMvxModalTouchView
{
    public PopupView()
    {
        ModalPresentationStyle = UIModalPresentationStyle.PageSheet;
    }

    public override void ViewDidLoad()
    {
        Title = "Map";
        base.ViewDidLoad();

        var closeButton = new UIButton(new RectangleF(0, 0, 50, 30));
        closeButton.TouchUpInside += CloseButtonClicked();
        Add(closeButton);
    }

    private EventHandler CloseButtonClicked()
    {
        return (sender, args) => NavigationController.DismissViewController(true, null);
    }
}

当我第一次单击此关闭按钮时它起作用了,但是当我尝试再次弹出此视图时它崩溃了。

4

1 回答 1

4

我怀疑您可能使用的标准MvxModalSupportTouchViewPresenter只期望一次显示一个模态视图/视图模型,并且期望从视图模型中清除视图/视图Close(this)模型。

请参阅:MvxModalSupportTouchViewPresenter.cs#L29

如果你对你的 UI 有强烈的想法,那么(在我看来)你最好的选择是编写你自己的自定义演示器——然后你可以打开/关闭/隐藏/显示任何你想要的东西。有关编写自定义演示者的更多信息,请参阅以下链接和视频:http ://slodge.blogspot.com/2013/06/presenter-roundup.html

于 2013-07-19T21:47:18.527 回答