【发布时间】:2014-03-21 21:52:21
【问题描述】:
我读过
Invoke method in objective c code from HTML code using UIWebView
他们会
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
这里,我的代码的一个问题是我没有
UIWebView 的委托的 shouldStartLoadWithRequest 方法,因为我只是直接在AppDelegate 中实现 UIWebView,如下所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIWebView *view = [[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
NSString* path = [[NSBundle mainBundle] pathForResource:@"main" ofType:@"html" inDirectory:@"www"];
[view loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]];
view.scalesPageToFit = NO;
UIViewController *controller = [[UIViewController alloc] init];
controller.view = view;
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = controller;
[self.window makeKeyAndVisible];
return YES;
}
我喜欢这种方式,因为代码和文件的结构更简单。
所以我的问题是,是否有可能以这种风格实现 call-native-from-webView ?
或者,我需要独立的 UIWebView Controller/Delegate 吗?
如果可能的话,你能告诉我如何做到这一点的例子吗?
我在 ObjectiveC 代码和 MVC 模型方面做得不多,如果你能告诉我方法,我将不胜感激。谢谢。
【问题讨论】:
-
此代码属于
UIViewController子类——不是您的应用委托... -
是的,我知道。在这里,我的问题是,没有 UIViewController 是否可能。
-
可以吗?是的。应该是?当然,这取决于。应该在 App Delegate 中完成吗?绝对不是在任何情况下。此外,您为什么不使用情节提要?
-
有很多理由不使用故事板。不过,在应用程序委托中以这种方式使用通用 UIViewController 没有任何好的理由。
-
不使用情节提要有一些很好的理由。开始新项目而不使用故事板的理由并不多。尽管如此,还是有原因的。不过默认应该是使用故事板,并且只有在你有充分理由不使用故事板的情况下才不要使用故事板,因此,当人们不使用故事板时,我总是会问为什么不这样做。我看到的大多数人都没有充分的理由。
标签: ios objective-c uiwebview