如何将数据传递到 MonoTouch.Dialog 的委托中?

2024-01-30

给定以下代码,如何将“名字”、“姓氏”等数据传递到我的方法中BookASession.SendMessage();?

RootElement CreateBookASessionRoot() 
{
    return new RootElement("Book a Session") {
        new Section() {
            new EntryElement("First Name", "First Name", ""),
            new EntryElement("Last Name", "Last Name", ""),
            new EntryElement("Email", "Email", "") { KeyboardType = UIKeyboardType.EmailAddress },
            new DateElement("Event Date", DateTime.Now),
            new RootElement ("Type of Shoot", new RadioGroup (0)){
                    new Section (){
                        new RadioElement("Wedding"),
                    new RadioElement("Portrait"),
                    new RadioElement("Boudoir"),
                    new RadioElement("Other")
                    }
            } ,
            new EntryElement("Message", "Message", "")
        } ,
        new Section () {
            new StringElement("Send", delegate { BookASession.SendMessage(); } )
        }
    };                      
}       

我喜欢实现此目的的方法是保留对输入元素的引用。这样我就可以轻松获取它们的输入值,而无需搜索整个元素树。我通过将特定屏幕的创建逻辑封装在单独的类中来实现此目的,如下所示:

public class BookASessionScreen
{
    private RootElement _root = null;

    private EntryElement _firstName = null;

    private EntryElement _lastName = null;

    private EntryElement _email = null;

    private DateElement _date = null;

    private RootElement _typeOfShoot = null;

    private EntryElement _message = null;

    private void CreateRoot()
    {
        _firstName = new EntryElement("First Name", "First Name", "");
        _lastName = _firstName = new EntryElement("First Name", "First Name", "");
        _email = new EntryElement("Email", "Email", "") { KeyboardType = UIKeyboardType.EmailAddress };
        _date = new DateElement("Event Date", DateTime.Now);
        _typeOfShoot = new RootElement ("Type of Shoot", new RadioGroup (0)){
            new Section () {
                new RadioElement("Wedding"),
                new RadioElement("Portrait"),
                new RadioElement("Boudoir"),
                new RadioElement("Other")
            }
        };
        _message = new EntryElement("Message", "Message", "");

        _root = new RootElement("Book a Session") {
            new Section() {
                _firstName,
                _lastName,
                _email,
                _date,
                _typeOfShoot,
                _message
            } ,
            new Section () {
                new StringElement("Send", delegate { 
                    //BookASession.SendMessage(_firstName.Value, _lastName.Value, ...)
                })
            }
        };
    }

    public RootElement Root 
    {
        get {
            if (_root == null) {
                CreateRoot();
            }
            return _root;
        }
    }
}

此外,您可能希望通过让类公开一个事件来解耦表单处理逻辑,如下所示:

1 - 创建一个类来保存事件数据,扩展 EventArgs:

public class BookASessionArgs : EventArgs
{
    public string FirstName
    {
        get;
        set;
    }

    public string LastName
    {
        get;
        set;
    }

    public string Email
    {
        get;
        set;
    }
}

2 - 在 BookASessionScreen 中声明您的事件:

public event EventHandler BookASession;

3 - 在您的委托中触发事件

if (BookASession != null) {
    BookASession(this, new BookASessionArgs() {
        FirstName = _firstName.Value,
        LastName = _lastName.Value
        //..
    });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将数据传递到 MonoTouch.Dialog 的委托中? 的相关文章

  • 使用未声明的类型“对象”

    这太奇怪了 通常我可以理解未声明的类 但这是声称 Object 类本身未声明 NSObject 可以工作 但我的项目设置方式我需要它是一个纯 Swift 对象 我的类标题如下所示 import UIKit import Foundation
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 找不到 Cocoa/Cocoa.h 文件

    我在用XMPPFramework在我的应用程序中 我已将 Cocoa Cocoa h 导入到我的 m 文件中 但是当我构建项目时Xcode显示错误 错误 未找到 Cocoa Cocoa h 文件 我该如何解决这个错误 如果您正在为 iOS
  • Swift - 保存在 TableView 中选择的复选标记

    我对 Swift 相当陌生 并且在 TableView 多重选择方面遇到问题 我有多个选择 可以用复选标记进行检查 类似于待办事项列表 当我检查项目时 我希望能够返回 ListView 并保存我的选择 我假设将其保持在已保存状态的代码将位于
  • iOS:如何创建核心数据库的备份副本?以及如何导出/导入该副本?

    我想为我的应用程序的用户提供创建核心数据数据库备份的可能性 特别是在他切换到新设备等情况下 我该怎么做呢 特别是如何重新导入该文件 我的意思是 假设他制作了数据库的备份副本 然后更改了大量内容并想要重置为以前保存的备份副本 我该怎么做呢 T
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • Facebook 登录打开错误的应用程序

    我正在尝试使用 facebook 实现应用程序的登录 但每次我尝试登录时 它都建议打开错误的应用程序 我尝试了一些在这里找到的东西 但没有成功 在 Facebook 的开发者页面上我添加了一个后缀 我的 plist 如下 有谁知道发生了什么
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • 带有自定义字体的 UILabel 错误呈现

    在我的 iPhone 应用程序中 我为所有 UILabel 设置了自定义字体 更准确地说 我对 UILabel 进行了子类化 重写了一个方法 在该方法中设置了自定义字体 然后将 IB 中的所有标签设置为该自定义类 现在的问题是 所有文本都渲
  • 具有隐式授权的 OAuth 应用程序中的客户端模拟

    来自 OAuth 草案 隐式section https datatracker ietf org doc html draft ietf oauth v2 31 section 1 3 2 在隐式授权流程期间发出访问令牌时 授权服务器不对客
  • 从应用程序内发送电子邮件中的图像和文本

    如何从我的应用程序内通过电子邮件发送图像和文本 表格数据形式 请大家帮忙并提出建议 谢谢 void sendMailWithImage UIImage image if MFMailComposeViewController canSend
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include

随机推荐