• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-12 09:36:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap