我正在Xamarin Studio中开发一个应用程序(所以它是C#),它的表单包含多个TextField
,我想在执行segue
到下一个屏幕之前验证整个屏幕。单击该按钮时,它将使用以下代码:
saveButton.Clicked += delegate(object sender, EventArgs e) {
if(ValidateScreen()){
PerformSegue("nextScreen", this);
}
};
现在我想知道这是否是最好的方法,还是应该使用
ShouldPerformSegue
?saveButton.Clicked += (object sender, EventArgs e) => ShouldPerformSegue ("nextScreen", this);
和
ShouldPerformSegue
方法:public override bool ShouldPerformSegue (string segueIdentifier, NSObject sender)
{
bool validScreen = ValidateScreen ();
bool result = true;
if (!validScreen) {
result = false;
}
return result;
}
那么最好的方法是什么?如果我当前的代码也可以正常工作,为什么还要在
ShouldPerformSegue
中使用更多代码,但是为什么会有ShouldPerformSegue
方法呢?(PS。
ShouldPerformSegue
尚不可用,有人知道为什么吗?不是主要问题。) 最佳答案
在这种情况下,ShouldPerformSegue的文档可能有点含糊。
当您想中止通过情节提要调用的的segue时,通常需要覆盖并使用ShouldPerformSegue
。
在上图的项目中,我们通过情节提要中的推键链接将Button
引至VC,名为“Second”。现在,我们可以在代码中使用ShouldPerformSegue
函数,通过从该故事板返回正确/错误值,来控制何时从情节提要中选择该脚本以实际执行向“第二” VC的过渡。
如果您从VC的情节提要中有多个segue,那么您可能还会在这些点上使用segue标识符来标识当前正在处理的情节(前提是您在情节提要中设置了该情节的标识符)。
在您的情况下,您是从代码中调用PerformSegue("nextScreen", this);
,因此从本质上讲,您会知道何时应该实际调用它(使用ValidateScreen()
)。因此,您可以放心地忽略该替代,并按照最初的操作进行操作。