Xamarin iOS PushViewController 空引用异常
Xamarin iOS PushViewController null reference exception
我是 Xamarin iOS 开发的新手,遇到了一个我无法解决的问题。当下面这行代码运行时,它抛出一个空引用异常,我想不通为什么。
this.NavigationController.PushViewController(location, true);
这是我的整个代码块。
partial void BtnLogin_TouchUpInside(UIButton sender)
{
if (txtPassword.Text != "" && txtUsername.Text != "")
{
//send UN & PD to webservice for validation.
xxx.xxx.xxx.Services s = new xxx.xxx.xxx.Services();
bool result = s.validateLogin(txtUsername.Text, txtPassword.Text);
if (result)
{
try
{
LocationViewController location = this.Storyboard.InstantiateViewController("LocationViewController") as LocationViewController;
if (location != null)
this.NavigationController.PushViewController(location, true);
}
catch (Exception ex)
{
LoginFail("Error", ex.Message);
}
}
else
{
LoginFail("Login", "Invalid username or password.");
}
}
else
{
LoginFail("Login", "You must enter both your username and password.");
}
}
And my Storyboard
您的屏幕需要包含在 UINavigationController 中。
如果您使用的是故事板,请在屏幕前放置一个 UINavigationController,然后将导航控制器中的一个 segue 拖到您的屏幕上。 segue 设置为 Root。
如果您使用代码:
new UINavigationController(new [your screen class]);
因为你的登录 viewController 不在 NavigationController 中,所以当你使用 this.NavigationController 时,它会抛出空引用异常。
解决这个问题,这里有两种方法:
将登录ViewVontroller放入NavigationController中,使NavigationController(登录页面的rootviewController)成为storyboard的初始Controller
更改此代码this.NavigationController.PushViewController(location, true);
到this.PresentViewController(location, true, null);
我是 Xamarin iOS 开发的新手,遇到了一个我无法解决的问题。当下面这行代码运行时,它抛出一个空引用异常,我想不通为什么。
this.NavigationController.PushViewController(location, true);
这是我的整个代码块。
partial void BtnLogin_TouchUpInside(UIButton sender)
{
if (txtPassword.Text != "" && txtUsername.Text != "")
{
//send UN & PD to webservice for validation.
xxx.xxx.xxx.Services s = new xxx.xxx.xxx.Services();
bool result = s.validateLogin(txtUsername.Text, txtPassword.Text);
if (result)
{
try
{
LocationViewController location = this.Storyboard.InstantiateViewController("LocationViewController") as LocationViewController;
if (location != null)
this.NavigationController.PushViewController(location, true);
}
catch (Exception ex)
{
LoginFail("Error", ex.Message);
}
}
else
{
LoginFail("Login", "Invalid username or password.");
}
}
else
{
LoginFail("Login", "You must enter both your username and password.");
}
}
And my Storyboard
您的屏幕需要包含在 UINavigationController 中。
如果您使用的是故事板,请在屏幕前放置一个 UINavigationController,然后将导航控制器中的一个 segue 拖到您的屏幕上。 segue 设置为 Root。
如果您使用代码:
new UINavigationController(new [your screen class]);
因为你的登录 viewController 不在 NavigationController 中,所以当你使用 this.NavigationController 时,它会抛出空引用异常。
解决这个问题,这里有两种方法:
将登录ViewVontroller放入NavigationController中,使NavigationController(登录页面的rootviewController)成为storyboard的初始Controller
更改此代码
this.NavigationController.PushViewController(location, true);
到
this.PresentViewController(location, true, null);