我正在 Xamarin Studio 中开发一个应用程序(所以它是 C#),它有一个包含多个 TextField s 的表单,我想在 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 还没有工作,有人知道为什么吗?不是主要问题..)
Best Answer-推荐答案 strong>
在这种情况下,可能是 ShouldPerformSegue 的文档有点模糊。
当您想说中止通过 Storyboard 调用的 segue 时,通常需要覆盖并使用 ShouldPerformSegue 。
在上图的项目中,我们通过 Storyboard 中的推送转场获得了标题为“Second”的 VC 的 Button 。现在我们可以在代码中使用 ShouldPerformSegue 函数来控制 Storyboard中的这个 segue 何时应该通过从该函数返回 true/false 来实际执行到“第二个”VC 的转换。
如果您有来自该 VC 的 Storyboard 的多个转场,您也可能会在这些点使用转场标识符来识别当前正在处理的转场(前提是您在 Storyboard 中为转场设置了标识符)。
在您的情况下,您正在从代码中调用 PerformSegue("nextScreen", this); ,因此本质上您会知道何时应该实际调用它(使用您的 ValidateScreen() )。因此,您可以放心地忽略覆盖并按照最初的方式继续操作。
关于c# - 检查验证并执行转场与应该执行转场,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/23405147/
|