0

我有一个带有一堆视图控制器的常规应用程序——比如说 viewControllerA、viewControllerB 和 viewControllerWeb。

"viewControllerWeb" 是一个 UIWebViewDelegate 并且里面只有一个 UIWebView。即使在与 viewControllerA 或 viewCONtrollerB 交互时,我也想调用它的方法。(方法如[webview stringByEvaluatingJavaScriptFromString:]

所以本质上,我似乎希望“viewControllerWeb”以某种方式在后台打开。任何人都知道如何完成这样的事情?我在想这个错误的方式吗?

希望你们能帮帮我!非常感谢!

4

2 回答 2

2

好吧,如果你想从创建 WebViewController 的 VC 中调用这些方法,你可以通过将 webViewController 设置为全局变量来轻松地做到这一点。

如果您想从外部 VC 访问它,那么您可以使 WebViewController 成为您可以从应用程序内部的任何位置访问的单例。这样的事情会做:

static WebViewController *sharedController = nil;

+ (WebViewController*)sharedController {

    if(sharedController == nil)
        sharedController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]];

    return sharedController;
}

这将允许您从任何地方访问您的 WebViewController:

[[WebViewController sharedController] stringByEvaluatingJavaScript...]

编辑:正如 RyanR 在评论中指出的那样,这显然会保留您的视图控制器,直到您明确释放它。单例的常见错误是忘记它们并且永远不要释放它们 - 确保你这样做!

于 2011-07-17T02:55:58.317 回答
1

您不应该保留视图控制器的副本。如果您希望共享功能,请将其抽象为单例。

于 2011-07-17T14:36:47.743 回答