这是我能够按照 Andrei N 的答案中的有用指示提出的解决方案。最后,在详细报告之间滚动时,我选择了 TransitionFlipFromRight 和 TransitionFlipFromLeft。希望它对其他人有用。
我已经有一个从 MvxModalSupportTouchViewPresenter 继承的演示者类
public class BedfordViewPresenter : MvxModalSupportTouchViewPresenter
在这个类中,我添加了 MvxPresentationHint 的一个属性。
private MvxPresentationHint _presentationHint;
在ChangePresentation方法的重写中,上面的属性用来存储传入的参数
public override void ChangePresentation (MvxPresentationHint hint)
{
_presentationHint = hint;
base.ChangePresentation (hint);
}
声明了两个新的 MvxPresentationHint 类(见下文)
在演示者类中,Show 方法被覆盖
public override void Show(IMvxTouchView view)
{
if (_presentationHint is FlipFromRightPresentationHint) {
var viewController = view as UIViewController;
MasterNavigationController.PushControllerWithTransition (viewController, UIViewAnimationOptions.TransitionFlipFromRight);
}
else
if (_presentationHint is FlipFromLeftPresentationHint) {
var viewController = view as UIViewController;
MasterNavigationController.PushControllerWithTransition (viewController, UIViewAnimationOptions.TransitionFlipFromLeft);
}
else {
base.Show (view);
}
_presentationHint = null;
}
使用 PushControllerWithTransition 方法创建了一个为 UINavigationController 提供扩展的新类
public static class UINavigationControllerExtensions
{
public static void PushControllerWithTransition(this UINavigationController
target, UIViewController controllerToPush,
UIViewAnimationOptions transition)
{
UIView.Transition(target.View, 0.75d, transition, delegate() {
target.PushViewController(controllerToPush, false);
}, null);
}
}
现在需要定义的是两个新的 MvxPresentationHint 类派生。这些属于您的 Core 类库项目,而不是 iOS 应用程序项目。
public class FlipFromLeftPresentationHint : MvxPresentationHint
{
public FlipFromLeftPresentationHint ()
{
}
}
和
public class FlipFromRightPresentationHint: MvxPresentationHint
{
public FlipFromRightPresentationHint ()
{
}
}
我希望这对尝试做类似事情的其他人有所帮助