首先让我解释一下情况。我正在制作一个IOS应用程序,它可以使用webservice和webApplication。以下面的例子为例。
假设我们有X公司,X公司可以使用we应用程序制作各种表单(回调表单、meetingRequest表单、vacationRequestForm、.)然后雇主将打开他们的申请,并在一个表格中看到这些表格的所有标题。当他们点击一个标题时,他们会转到下一个屏幕,看到整个表单并开始填充它。
这方面的困难在于,每一家公司都可以创建自己的表格。所以X公司可能有比Y公司更多的形式,经过大量的研究,我发现了QuickDialog惊人的库。你可以在这里上找到它。绝对值得去看看!
问题,,好的,现在是问题。当然,一旦用户填写了表单,就应该将数据发送回服务器。为此,我使用了一个控制器类和一个NSObject类。理解的最好方法是查看登录示例。首先,这是登录的json。
{
"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。
@interface LoginInfo : NSObject {
@private
NSString *_password;
NSString *_login;
}
@property(strong) NSString *login;
@property(strong) NSString *password;
@end接下来是一个控制器类。在这个控制器类中,您说当按下按钮时,可以将文本字段中的值提取到这个loginInfo类中。这是按以下方式完成的。
- (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的属性填充。我不知道我怎么能做到。
我希望任何人都能帮我!如果你需要更多的解释,请随便问!
先向您致以良好的问候和感谢!
发布于 2012-11-14 14:31:37
fetchValueUsingBindingIntoObjects:接受一个"id",这意味着几乎所有支持KVC的对象都会这样做:
NSMutableDictionary *dict = [NSMutableDictionary new];
[self.root fetchValueUsingBindingsIntoObject:dict];这样,你就可以得到任何形式的数据,并使用它将其发送回网络。
https://stackoverflow.com/questions/13377312
复制相似问题