2012-08-14 50 views
1

我得到的「Hello World」的文本打印後,我硬編碼一些HTML送到我的UIWebView的功能,但現在我想的是HTML移動到文件的其他地方在文件系統上,它不是渲染。IOS - 從.html文件打印HTML不是在一個UIWebView工作

以下是我有:

- (void)viewDidAppear:(BOOL)animated 
{ 
    NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"learn" ofType:@"html" inDirectory:@"src/html_files"]; 

    NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil]; 
    [theWebView loadHTMLString:htmlString baseURL:nil]; 
} 

,我的HTML文件是在我犯了名爲src/html_files目錄和文件名爲learn.html

我在做什麼是不正確HTML不在屏幕上呈現?

謝謝!

+0

**凡**上的文件系統是這個文件?這是一個捆綁資源,用您的應用程序構建?它是你的應用的**文檔**或**緩存**目錄中的文件嗎?請調試您的應用程序。在分配了htmlFile後停止。使用'NSLog()'顯示'htmlFile'的值。然後,越過「htmlString」被分配的行。 'htmlString'的價值是什麼?它是'零'嗎?我總是推薦使用它的方法的'NSError'參數,並在操作完成後檢查它。您正在傳遞'error:nil',如果發生錯誤,您不會看到錯誤。 – Nate 2012-08-14 03:08:07

+0

@Nate我做了一個新的「組」,並把html文件存在。我不確定這意味着它是否在捆綁資源中。我如何在那裏添加它?或者我應該在那裏添加它?我對這個文件做了什麼正確的事情? – GeekedOut 2012-08-14 03:25:31

回答

1

好吧,那麼羣組只是Xcode中的一個構造,用於保持您的應用程序資源的有序性。儘管Xcode使用小文件夾圖標,但並不一定意味着這些文件夾實際上是(Mac或iOS)文件系統上的單獨文件夾。

但是,聽起來好像您已將該文件添加爲捆綁軟件資源。這就是你發佈的代碼的樣子,但我必須問,確定。

最有可能的,唯一錯的是這個:

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"learn" 
                ofType:@"html" 
               inDirectory:@"src/html_files"]; 

應該是這個:

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"learn" 
                ofType:@"html"]; 

the Apple documentation for NSBundle

+ (NSString *)pathForResource:(NSString *)name 
         ofType:(NSString *)extension 
        inDirectory:(NSString *)bundlePath 

bundlePath

The path of a top-level bundle directory. This must be a valid path. For example, to specify the bundle directory for a Mac app, you might specify the path /Applications/MyApp.app.

bundlePath參數並不意味着以指定到捆綁資源的相對路徑。不具有bundlePath參數的pathForResource:ofType:版本幾乎總是你會使用什麼。它會發現learn.html文件是任何一個,一旦安裝你的應用程序,以及完整的路徑返回到。你不必擔心它是如何嵌套的。這只是一個捆綁資源。

給一個嘗試。正如我在我的評論所說,雖然,我總是建議進行調試服用error參數的優勢:

NSError* error; 
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error: &error]; 
if (error != nil) { 
    NSLog(@"Error with stringWithContentsOfFile: %@", [error localizedDescription]); 
}