Iphone 当另一个viewController在屏幕上时调用某个UIViewController上的方法?
我有一个常规的应用程序,其中有一组视图控制器——比如viewControllerA、viewControllerB和viewControllerWeb “viewControllerWeb”是一个UIWebViewDelegate,其中只有一个UIWebView。即使在与viewControllerA或viewCOntrollerB交互时,我也希望对其调用方法。(类似于Iphone 当另一个viewController在屏幕上时调用某个UIViewController上的方法?,iphone,ios,uiviewcontroller,uiwebviewdelegate,Iphone,Ios,Uiviewcontroller,Uiwebviewdelegate,我有一个常规的应用程序,其中有一组视图控制器——比如viewControllerA、viewControllerB和viewControllerWeb “viewControllerWeb”是一个UIWebViewDelegate,其中只有一个UIWebView。即使在与viewControllerA或viewCOntrollerB交互时,我也希望对其调用方法。(类似于[webview stringByEvaluatingJavaScriptFromString:的方法) 所以本质上,我似乎希望
[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
,因为这是一个有点昂贵的对象。谢谢,我会尝试一下,然后给你们回复。