如何从填充的html表单发送数据到第二个viewcontroller?

时间:2013-03-29 19:20:48

标签: objective-c web-services webview storyboard

我已经在这个问题上工作了几天,这让我完全疯了。我正在使用故事板。

我有一个带webview的viewcontroller1。 webview填充html登录表单,通过textField(用户名)另一个textField(密码),然后是一个完美的按钮(submit):一旦按下按钮,html表单将填充我的textFields输入。填写并提交表单后,我希望将用户发送到具有webview的新viewcontroller(viewController2),我想用网站上的一些内容填充。对于这个世界,我无法了解如何将用户发送到下一个视图。

另一个细节是登录html表单有一个用户类型select。因此,提交按钮发送给我的地址可以是不同的。如果它的老师填写表格,返回的地址将是“myschool / jsp / teacher / right_teacher_lesson_status.jsp”,如果它是学生的其他东西,如果它来自另一所学校,还有别的东西。

这是我尝试将用户发送到包含UIwebview2的下一个视图的代码:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request  navigationType: 
(UIWebViewNavigationType)navigationType
{

  if (navigationType == UIWebViewNavigationTypeFormSubmitted) {
  UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
  ViewController2 *vc = [storyboard instantiateViewControllerWithIdentifier:@"webview2"];
  NSLog(@"Allow navigation to request = %@", request);

  [self.navigationController pushViewController:vc animated:YES];

  return YES;

}

NSLog告诉我

  

“允许导航请求:/myschool/jsp/teacher/right_teacher_lesson_status.jsp”

因此,如果我告诉webview2地址,肯定会把它拿起来。但由于我不知道它是哪个学校或使用类型,我希望webview2从上面的代码中获得。请帮我。如何将信息传递给下一个视图?

1 个答案:

答案 0 :(得分:0)

我建议创建一个包含两个文本字段和一个选择器菜单的视图。这比网络视图好得多。如果您无法以漂亮的方式显示生成的内容,则可以使用Web视图,但应尽可能使用自定义视图优化用户体验。

一旦你有UIKit元素来捕获数据,将它传递给下一个视图控制器将是微不足道的。

话虽如此:

也许这确实是HTML编码的问题。您的“提交”按钮可以包含URL中的参数(GET而不是POST)。然后,您只需将URL传递给下一个视图控制器即可。

vc2.urlToLoad = request;

由于您没有显示URL,因此无论如何都不会向用户公开get变量。由于您的服务器可以解释参数,您甚至不必在第二个视图控制器中解析它们(尽管您可以将它们用于其他目的)。