当按钮逻辑失败时,在故事板中停止segue

时间:2014-06-11 11:36:33

标签: c# ios xamarin.ios xamarin

我创建了一个新的Monotouch iOS故事板项目。我添加了两个屏幕,一个带有一个按钮。我已将按钮链接到第二个屏幕,并带有推送segue。这一切都按预期工作。我现在所做的是在按钮内添加一个内部事件方法,我试图添加一些逻辑来说明是否应该执行segue。

    partial void LoginButton_click(UIButton sender)
    {
        Random r = new Random();
        if (r.Next(1,2000000) == 33432)
        {
            this.PerformSegue("Push", this);
        } else {
            //Do not perform segue
        }
    }

我在网上看过很多关于如何使用PerformSegue方法的参考资料,但如果逻辑不正确,我无法找到如何在故事板中停止segue。我不应该在故事板中创建一个segue然后以编程方式进行吗?这似乎消除了使用故事板的巨大好处,但看看一切是如何组合在一起的。

2 个答案:

答案 0 :(得分:1)

您可以实施UIViewController方法shouldPerformSegue:withIdentifier:

当触发segue时调用此方法,您可以返回一个布尔值来指示是否应该执行segue。

使用这种方法,您可以将segue与按钮保持连接,并且您不需要touchUpInside动作处理程序。

答案 1 :(得分:0)

我不熟悉monotouch或xamarin,但请确保通过视图控制器而不是按钮连接segue。

据我所知,你不能停止一个开始的segue。您所能做的就是在赛格内捕捉事件。正确的做法是确保你要么调用它,要么不调用它。

如果以下代码段在每个场景中执行segue,则segue与按钮的触摸事件相关联,并在每次触摸按钮时触发。

This question & answer在Xcode / Objective-C中解决了这个完全相同的问题。