我已经使用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);
}
}
当我点击此关闭按钮时,它第一次有效,但当我再次尝试弹出此视图时它崩溃了。
答案 0 :(得分:4)
我怀疑你可能正在使用标准MvxModalSupportTouchViewPresenter
,它只希望一次显示一个模态视图/ viewModel,并期望使用ViewModel中的Close(this)
清除视图/ viewModel
请参阅:MvxModalSupportTouchViewPresenter.cs#L29
如果您对自己的用户界面有强烈的想法,那么(在我看来)你最好的选择是编写自己的自定义演示者 - 然后你可以打开/关闭/隐藏/显示你想要的任何内容。有关编写自定义演示者的详细信息,请参阅以下链接和视频:http://slodge.blogspot.com/2013/06/presenter-roundup.html