MvvmCross iOS:如何在使用IMvxModelTouchView时关闭视图控制器

时间:2013-07-19 21:01:08

标签: ios xamarin mvvmcross

我已经使用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);
    }
}

当我点击此关闭按钮时,它第一次有效,但当我再次尝试弹出此视图时它崩溃了。

1 个答案:

答案 0 :(得分:4)

我怀疑你可能正在使用标准MvxModalSupportTouchViewPresenter,它只希望一次显示一个模态视图/ viewModel,并期望使用ViewModel中的Close(this)清除视图/ viewModel

请参阅:MvxModalSupportTouchViewPresenter.cs#L29

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