C# 解除后PushModalAsync查看控制器崩溃应用
我正在使用Xamarin Auth通过谷歌进行连接。身份验证完成且确定后,我会执行以下操作:C# 解除后PushModalAsync查看控制器崩溃应用,c#,ios,xamarin,C#,Ios,Xamarin,我正在使用Xamarin Auth通过谷歌进行连接。身份验证完成且确定后,我会执行以下操作: UIViewController.DismissViewController(true, null); 然后,我点击一个按钮,尝试制作一个pushmodalasync: await Application.Current.MainPage.Navigation.PushModalAsync(navigationPage) 执行此操作时,我的应用程序会崩溃,但出现以下异常: System.Object
UIViewController.DismissViewController(true, null);
然后,我点击一个按钮,尝试制作一个pushmodalasync:
await Application.Current.MainPage.Navigation.PushModalAsync(navigationPage)
执行此操作时,我的应用程序会崩溃,但出现以下异常:
System.ObjectDisposedException:无法访问已处置的对象。
对象名称:“平台渲染器”。在
NETObjut.GETHySuffRead()[0x000 04a]
/Library/Frameworks/Xamarin.iOS.framework/Versions/12.2.1.16/src/Xamarin.iOS/Foundation/NSObject2.cs:456
在中的UIKit.UIViewController.get_View()[0x0002a]处
/Library/Frameworks/Xamarin.iOS.framework/Versions/12.2.1.16/src/Xamarin.iOS/UIKit/UIViewController.g.cs:2983
位于中的Xamarin.Forms.Platform.iOS.Platform.EndEditing()[0x00051]
:0 at
Xamarin.Forms.Platform.iOS.Platform.Xamarin.Forms.INavigation.PushModalAsync
(Xamarin.Forms.Page模式,System.Boolean动画)[0x00000]英寸
:0 at
Xamarin.Forms.Internals.NavigationProxy.OnPushModal
(Xamarin.Forms.Page模式,System.Boolean动画)[0x00022]英寸
D:\a\1\s\Xamarin.Forms.Core\NavigationProxy.cs:212 at
Xamarin.Forms.Application+NavigationImpl.n_u1(Xamarin.Forms.Page
模态,系统。布尔值(动画)
:0
在Xamarin.Forms.Application+NavigationImpl+d_u3.MoveNext
()[0x00065]
如果我不这样做
UIViewController.DismissViewController(true, null);
我的应用程序没有崩溃
以下是iOS中与google连接的完整页面代码:
public class GoogleLoginPageIos : IGoogleLoginPage
{
public static GoogleAuthenticator m_auth;
private static UIViewController viewController;
public void OnAuthenticationCompleted()
{
viewController.DismissViewController(true, null);
}
public void OnAuthenticationCanceled()
{
viewController.DismissViewController(true, null);
}
public void OnAuthenticationFailed()
{
viewController.DismissViewController(true, null);
}
public void StartAuthentication(Action onStartLogin, Action<Account> onSuccessfullLogin)
{
m_auth = new GoogleAuthenticator(onStartLogin, onSuccessfullLogin, this);
var authenticator = m_auth.OAuth2Authenticator;
var mainViewController = UIApplication.SharedApplication.KeyWindow.RootViewController;
viewController = authenticator.GetUI();
mainViewController.PresentViewController(viewController, true, null);
}
}
公共类GoogleLoginPageIos:IGoogleLoginPage
{
公共静态身份验证程序m_auth;
专用静态UIViewController-viewController;
身份验证已完成()上的公共无效
{
DismissViewController(true,null);
}
身份验证已取消()上的公共无效
{
DismissViewController(true,null);
}
AuthenticationFailed()上的公共无效
{
DismissViewController(true,null);
}
public void StartAuthentication(开始登录时的操作,成功登录时的操作)
{
m_auth=新的GoogleAuthenticator(onStartLogin、onSuccessfullLogin、this);
var authenticator=m_auth.OAuth2Authenticator;
var mainViewController=UIApplication.SharedApplication.KeyWindow.RootViewController;
viewController=authenticator.GetUI();
mainViewController.PresentViewController(viewController,true,null);
}
}
我使用的是选项卡式页面
有人能帮我吗
谢谢什么是VC实例
UIViewController
?它是你的表单应用程序(看起来像)…它是authenticator.GetUI()代码>实例将完整的异常/stacetrace添加到问题中好的,完成:-)您可以共享该页面中的所有相关代码吗?我不知道您使用的是Xamarin.forms应用程序还是Xamarin.iOS应用程序?为什么UIViewController出现在Xamarin.forms应用程序中?