Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 当另一个viewController在屏幕上时调用某个UIViewController上的方法?_Iphone_Ios_Uiviewcontroller_Uiwebviewdelegate - Fatal编程技术网

Iphone 当另一个viewController在屏幕上时调用某个UIViewController上的方法?

Iphone 当另一个viewController在屏幕上时调用某个UIViewController上的方法?,iphone,ios,uiviewcontroller,uiwebviewdelegate,Iphone,Ios,Uiviewcontroller,Uiwebviewdelegate,我有一个常规的应用程序,其中有一组视图控制器——比如viewControllerA、viewControllerB和viewControllerWeb “viewControllerWeb”是一个UIWebViewDelegate,其中只有一个UIWebView。即使在与viewControllerA或viewCOntrollerB交互时,我也希望对其调用方法。(类似于[webview stringByEvaluatingJavaScriptFromString:的方法) 所以本质上,我似乎希望

我有一个常规的应用程序,其中有一组视图控制器——比如viewControllerA、viewControllerB和viewControllerWeb

“viewControllerWeb”是一个UIWebViewDelegate,其中只有一个UIWebView。即使在与viewControllerA或viewCOntrollerB交互时,我也希望对其调用方法。(类似于
[webview stringByEvaluatingJavaScriptFromString:
的方法)

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


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

如果您想从创建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在评论中指出的,这显然会保留视图控制器,直到您明确释放它。单身汉的常见错误是忘记他们,永远不要释放他们-确保你这样做

如果您想从创建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在评论中指出的,这显然会保留视图控制器,直到您明确释放它。单身汉的常见错误是忘记他们,永远不要释放他们-确保你这样做

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

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

这是一个很好的方法,但您确实需要确保在某个时候释放
sharedController
,因为它是一个有点昂贵的对象。谢谢,我会尝试一下,然后再与大家联系。这是一个很好的方法,除非你真的需要确保在某个时候释放
sharedController
,因为这是一个有点昂贵的对象。谢谢,我会尝试一下,然后给你们回复。