Вы можете сделать 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
Управление UIElements должно быть оставлено контроллеру представления, которому принадлежит UIElementПо этой причине я предлагаю использовать делегата.Со ссылкой на viewController A вы можете напрямую манипулировать UIWebView, но я настоятельно рекомендую против этого.С таким кодом, кто знает, какие другие классы также вносят изменения в UIElements.