C# 检查验证并执行segue vs应执行segue

C# 检查验证并执行segue vs应执行segue,c#,ios,xamarin.ios,segue,C#,Ios,Xamarin.ios,Segue,我正在Xamarin Studio中开发一个应用程序(所以它是C#),它有一个包含多个文本字段的表单,我想在执行到下一个屏幕的序列之前验证整个屏幕。单击按钮时,它正在使用以下代码: saveButton.Clicked += delegate(object sender, EventArgs e) { if(ValidateScreen()){ PerformSegue("nextScreen", this); } }; 现在我想知道这是否是最好的方法,还是应

我正在Xamarin Studio中开发一个应用程序(所以它是C#),它有一个包含多个
文本字段的表单,我想在执行到下一个屏幕的
序列之前验证整个屏幕。单击按钮时,它正在使用以下代码:

saveButton.Clicked += delegate(object sender, EventArgs e) {

    if(ValidateScreen()){
        PerformSegue("nextScreen", this);
    }
};
现在我想知道这是否是最好的方法,还是应该使用
ShouldPerformSegue
,类似这样:

saveButton.Clicked += (object sender, EventArgs e) => ShouldPerformSegue ("nextScreen", this);
应执行segue
方法:

public override bool ShouldPerformSegue (string segueIdentifier, NSObject sender)
{
    bool validScreen = ValidateScreen ();
    bool result = true;
    if (!validScreen) {
        result = false;
    }
    return result;
}
那么最好的方法是什么呢?如果我当前的代码也正常工作,为什么我会在ShouldPerformSegue
中使用更多的代码,但是为什么会有
ShouldPerformSegue
方法呢

(顺便说一句,
ShouldPerformSegue
还没开始工作,有人知道为什么吗?不是主要问题.)

{

返回是/否;
}


您可以使用upper方法验证您的序列,如果所有验证都正确,只需返回YES,否则您可以返回NO.

在这种情况下,可能的文档有点模糊

当您想说中止通过故事板调用的序列时,通常需要覆盖并使用
ShouldPerformSegue

在上图的项目中,我们通过情节提要中的一个按钮,获得了名为“Second”的VC的
按钮。现在,我们可以在代码中使用
ShouldPerformSegue
函数,通过从该函数返回true/false来控制故事板中的该段何时实际执行到“第二个”VC的转换

如果您从该VC的故事板中有多个segue,那么您还可能在这些点上使用segue标识符来标识当前正在处理的segue(前提是您在故事板中为segue设置了一个标识符)


在您的例子中,您正在调用
performsgue(“nextScreen”,this)源于代码,因此本质上您应该知道何时应该实际调用它(使用
ValidateScreen()
)。因此,您可以安全地忽略覆盖,继续您最初的操作。

这是Objective-C如果我是正确的,我应该更清楚地提到它,而不仅仅是
C
标记。我正在使用Xamarin Studio,所以它都在
C#
中。但是如果我尝试
返回YES我收到一个错误:
在当前上下文中不存在
-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender