OGeek|极客世界-中国程序员成长平台

标题: c# - 检查验证并执行转场与应该执行转场 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 09:36
标题: c# - 检查验证并执行转场与应该执行转场

我正在 Xamarin Studio 中开发一个应用程序(所以它是 C#),它有一个包含多个 TextFields 的表单,我想在 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-推荐答案


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

当您想说中止通过 Storyboard 调用的 segue 时,通常需要覆盖并使用 ShouldPerformSegue

enter image description here

在上图的项目中,我们通过 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/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4