首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >quickDialog窗体的泛型类

quickDialog窗体的泛型类
EN

Stack Overflow用户
提问于 2012-11-14 10:46:00
回答 1查看 488关注 0票数 0

首先让我解释一下情况。我正在制作一个IOS应用程序,它可以使用webservice和webApplication。以下面的例子为例。

假设我们有X公司,X公司可以使用we应用程序制作各种表单(回调表单、meetingRequest表单、vacationRequestForm、.)然后雇主将打开他们的申请,并在一个表格中看到这些表格的所有标题。当他们点击一个标题时,他们会转到下一个屏幕,看到整个表单并开始填充它。

这方面的困难在于,每一家公司都可以创建自己的表格。所以X公司可能有比Y公司更多的形式,经过大量的研究,我发现了QuickDialog惊人的库。你可以在这里上找到它。绝对值得去看看!

问题,,好的,现在是问题。当然,一旦用户填写了表单,就应该将数据发送回服务器。为此,我使用了一个控制器类和一个NSObject类。理解的最好方法是查看登录示例。首先,这是登录的json。

代码语言:javascript
复制
{
    "grouped": true,
    "title": "Login Form",
    "controllerName": "LoginController",
    "sections": [
        { "title":"login", "elements": [
                { "type":"QEntryElement", "title":"Login","placeholder":"Login or email", "bind":"textValue:login", "key":"login"},
                {  "type":"QEntryElement", "title":"Password", "placeholder":"Password",  "secureTextEntry":true, "bind":"textValue:password" }
            ]
        },
        { "elements":[
                { "type":"QButtonElement", "key":"button", "title":"Login", "controllerAction":"onLogin:"}
            ]
        }
    ]
}

您可以看到这两个字段有一个绑定选项。这个项目包含一个NSObject类(loginInfo),在这个类中,这些字段被添加为NSStrings。

代码语言:javascript
复制
@interface LoginInfo : NSObject {
@private
    NSString *_password;
    NSString *_login;
} 
@property(strong) NSString *login;
@property(strong) NSString *password;
@end

接下来是一个控制器类。在这个控制器类中,您说当按下按钮时,可以将文本字段中的值提取到这个loginInfo类中。这是按以下方式完成的。

代码语言:javascript
复制
- (void)onLogin:(QButtonElement *)buttonElement {

    [[[UIApplication sharedApplication] keyWindow] endEditing:YES];
    [self loading:YES];
    LoginInfo *info = [[LoginInfo alloc] init];
    [self.root fetchValueUsingBindingsIntoObject:info];
    [self performSelector:@selector(loginCompleted:) withObject:info afterDelay:2];
}
- (void)loginCompleted:(LoginInfo *)info {
    [self loading:NO];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome" message:[NSString stringWithFormat: @"Hi %@, I hope you're loving QuickDialog! Here's your pass: %@", info.login, info.password] delegate:self cancelButtonTitle:@"YES!" otherButtonTitles:nil];
    [alert show];
}

好吧,我知道这是很多信息。但我只想要一个很好的解释我的问题。我认为控制器类不是我的问题,但是NSObject类是问题。我希望这是通用的。因为它应该被来自json的属性填充。我不知道我怎么能做到。

我希望任何人都能帮我!如果你需要更多的解释,请随便问!

先向您致以良好的问候和感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-14 14:31:37

fetchValueUsingBindingIntoObjects:接受一个"id",这意味着几乎所有支持KVC的对象都会这样做:

代码语言:javascript
复制
NSMutableDictionary *dict = [NSMutableDictionary new];
[self.root fetchValueUsingBindingsIntoObject:dict];

这样,你就可以得到任何形式的数据,并使用它将其发送回网络。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13377312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档