viewController A をクラス B のデリゲートにして、クラス B から viewController A のメソッドを呼び出して、UIWebView が目的の JavaScript を実行できるようにすることができます。
@protocol ClassBDelegate
- (void) executeJavascript:(NSString*)jsString;
@end
@interface ClassB : NSObject<ViewControllerADelegate>
@property (nonatomic, assign) id<ClassBDelegate> delegate;
@end
@implementation ClassB
- (void) myFunc
{
...
[self.delegate executeJavascript:@"alert('Awesome!');"];
}
@end
クラス B のインスタンスが viewControllerA に割り当てられたデリゲート プロパティを持っている場所のように、いくつかのものが欠けています。
次のようなものも必要です。
@interface ClassA : UIViewController<ClassBDelegate>
...
- (void) executeJavascript:(NSString*)jsString;
@end
@implementation ClassA
...
- (void) executeJavascript:(NSString*)jsString
{
[self.myWebView stringByEvaluatingJavaScriptFromString:jsString];
}
@end
UIElement の操作は、UIElement を所有するビュー コントローラーに任せる必要があるため、デリゲートの使用を提案します。viewController A を参照することで、UIWebView を直接操作できますが、これには強くお勧めしません。このようなコードが進行していると、他のクラスが UIElements に変更を加えていることを誰が知っているでしょうか。