菜鸟教程小白 发表于 2022-12-12 09:36:39

c# - 检查验证并执行转场与应该执行转场


                                            <p><p>我正在 Xamarin Studio 中开发一个应用程序(所以它是 C#),它有一个包含多个 <code>TextField</code>s 的表单,我想在 <code>segue</code> 之前验证整个屏幕> 执行下一个屏幕。单击按钮时,它正在使用以下代码:</p>

<pre><code>saveButton.Clicked += delegate(object sender, EventArgs e) {

    if(ValidateScreen()){
      PerformSegue(&#34;nextScreen&#34;, this);
    }
};
</code></pre>

<p>现在我想知道这是否是最好的方法,或者我应该使用 <code>ShouldPerformSegue</code>,如下所示:</p>

<pre><code>saveButton.Clicked += (object sender, EventArgs e) =&gt; ShouldPerformSegue (&#34;nextScreen&#34;, this);
</code></pre>

<p>还有<code>ShouldPerformSegue</code>方法:</p>

<pre><code>public override bool ShouldPerformSegue (string segueIdentifier, NSObject sender)
{
    bool validScreen = ValidateScreen ();
    bool result = true;
    if (!validScreen) {
      result = false;
    }
    return result;
}
</code></pre>

<p>那么最好的方法是什么?如果我当前的代码也可以工作,为什么我要在 <code>ShouldPerformSegue</code> 中使用更多代码,但是为什么还有 <code>ShouldPerformSegue</code> 方法?</p>

<p>(PS. <code>ShouldPerformSegue</code> 还没有工作,有人知道为什么吗?不是主要问题..)</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在这种情况下,可能是 <a href="https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/shouldPerformSegueWithIdentifier:sender:" rel="noreferrer noopener nofollow">ShouldPerformSegue</a> 的文档有点模糊。</p>

<p>当您想说中止<strong>通过 Storyboard 调用</strong>的 segue 时,通常需要覆盖并使用 <code>ShouldPerformSegue</code>。</p>

<p> <img src="/image/KjRy0.png" alt="enter image description here"/> </p>

<p>在上图的项目中,我们通过 Storyboard 中的推送转场获得了标题为“Second”的 VC 的 <code>Button</code>。现在我们可以在代码中使用 <code>ShouldPerformSegue</code> 函数来控制 Storyboard中的这个 segue 何时应该通过从该函数返回 true/false 来实际执行到“第二个”VC 的转换。</p>

<p>如果您有来自该 VC 的 Storyboard 的多个转场,您也可能会在这些点使用转场标识符来识别当前正在处理的转场(前提是您在 Storyboard 中为转场设置了标识符)。</p>

<p>在您的情况下,您正在从代码中调用 <code>PerformSegue("nextScreen", this);</code> ,因此本质上您会知道何时应该实际调用它(使用您的 <code>ValidateScreen() </code>)。因此,您可以放心地忽略覆盖并按照最初的方式继续操作。</p></p>
                                   
                                                <p style="font-size: 20px;">关于c# - 检查验证并执行转场与应该执行转场,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23405147/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23405147/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: c# - 检查验证并执行转场与应该执行转场