我不想花时间学习Obj-C.我花了7年多的时间做Web应用程序编程.难道不应该有一种方法来使用WebView,只需用javascript编写整个应用程序,直接从项目资源中提取文件吗?

推荐答案

我四处寻找后找到了答案.以下是我所做的:

  1. 在XCode中创建一个新项目.我想我用的是基于视图的应用程序.

  2. 将WebView对象拖到您的界面上并调整大小.

  3. 在WebViewController内部.m(或类似名称的文件,取决于视图的名称),在viewDidLoad方法中:

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];  
    NSData *htmlData = [NSData dataWithContentsOfFile:filePath];  
    if (htmlData) {  
      NSBundle *bundle = [NSBundle mainBundle]; 
      NSString *path = [bundle bundlePath];
      NSString *fullPath = [NSBundle pathForResource:@"index" ofType:@"html" inDirectory:path];
      [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:fullPath]]];
    }
  4. 现在,您作为资源添加到项目中的任何文件都可以在您的Web应用程序中使用.我有一个index.html文件,包括javascript和CSS以及图像文件,没有任何问题.到目前为止,我发现的唯一限制是不能创建新文件夹,因此所有文件都会使资源文件夹变得杂乱无章.

  5. 诀窍:确保已将文件作为资源添加到XCode中,否则该文件将不可用.我一直在XCode中添加一个空文件,然后将我的文件拖到查找器的顶部.这对我很管用.

注意:我意识到Obj-C一定不难学.但是因为我在JS中已经有了这个应用程序,而且我知道它在Safari中可以工作,所以对我来说,这是一个更快的开发周期.总有一天我肯定会崩溃,go 学习Obj-C.

我发现其他一些资源很有帮助:

从javascript调用Obj-C:calling objective-c from javascript

从OBJ-C:iphone app development for web hackers调用javascript

正在从应用程序Bundle 包读取文件:uiwebview

Ios相关问答推荐

当重新呈现UI时,嵌套的 struct 值如何与@Observable一起工作?

如何让3张组合的`SF Symbol`图片围绕一个特定点旋转?

有没有办法将滚动视图RTL(阿拉伯语)与Ltr动画一起使用?

如何根据SWIFT中的按钮点击更新文本值

为什么applicationState发布者只发布一次?

如何在 SwiftUI 中将选项卡放在滚动视图中?

Flutter iOS 构建失败并在 ios/Runner/AppDelegate.swift 中出现多个错误

帧过渡动画有条件地工作

通过MatchedGeometryEffect向上滑动视图

改变 UIView 位置的简单方法?

Xcode 缺少支持文件 iOS 12.2 (16E227)

Got Unrecognized selector -replacementObjectForKeyedArchiver: 在 Swift 中实现 NSCoding 时崩溃

有没有办法在 xib 文件中的视图和顶部布局指南之间添加约束?

iOS 7 圆形框架按钮

aps-environment 始终在发展

测试目标 X 遇到错误(提前意外退出,操作从未完成 bootstrap - 不会try 重新启动

iOS 7 及更高版本: for each 视图控制器设置状态栏样式

快速从 NSTimeInterval 转换为小时、分钟、秒、毫秒

UICollectionView:必须用非零布局参数初始化

在两个或多个 iPhone 应用程序之间共享数据