0

我已经解决这个问题几天了,这让我完全发疯了。我正在使用故事板。

我有带有 webview 的 viewcontroller1。webview 填充一个 html 登录表单,通过一个 textField(用户名)另一个 textField(密码),然后一个按钮(提交),它完美地工作:一旦按下按钮,html 表单就会填充我的 textFields 输入。填写并提交表单后,我希望将用户发送到具有 web 视图的新视图控制器 (viewController2),我想用网站中的一些内容填充该视图控制器。对于世界,我无法找出如何将用户发送到下一个视图。

另一个细节是登录 html 表单有一个用户类型选择。因此,提交按钮发送给我的地址可能不同。如果是老师填写表格,则返回的地址将类似于“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 从上面的代码中接收到它。请帮我。如何将信息传递到下一个视图?

4

1 回答 1

0

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

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

话虽如此:

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

vc2.urlToLoad = request;

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

于 2013-03-29T21:14:20.990 回答