2011-01-11 92 views
0

我有一個iOS應用程序,在一個點上打開一個網站鏈接到一個web視圖。這些鏈接保存在plist文件中(所以隨着應用程序的發展,它們很容易維護)。接下來我想要做的就是鏈接到保存在應用程序中的PDF(或任何文本格式的圖片,甚至是html格式,這是靈活的)。我想盡可能地在現有的應用程序結構中做到這一點。那麼,是否有可能創建一個可以作爲網頁鏈接放入plist的鏈接,而是在設備本身上打開一個文件(可能在webview中)?我會怎麼做呢?有任何想法嗎?鏈接到應用程序內的PDF

Thanx提前爲您提供幫助!

回答

0

您需要在運行時創建鏈接。我會建議有一個本地URL的特定前綴,如mylocalfile:文件名。然後,在加載plist的代碼中,檢查前綴並在必要時創建鏈接。您也可以只創建一次這些鏈接並將它們存儲在單獨的文件中,然後加載它而不是原始文件。

NSArray *links = nil; //I assumed your plist is an array. Change to dictionary if required 
NSString *pathToStoredFile; //Get the path for the file you create with the updated links 
if([[NSFileManager defaultManager] fileExistsAtPath:pathToStoredFile]) { 
    links = [NSArray arrayWithContentsOfFile:pathToStoredFile]; 
} else { 
    NSArray *tmp = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ListOfLinks" ofType:@"plist"]]; 
    if(!tmp) { 
     //handle error 
    } 
    NSMutableArray *tmpLinks = [[NSMutableArray alloc] initWithCapacity:[tmp count]]; 
    for(NSString *link in tmp) { 
     if([link hasPrefix:@"mylocalfile:"]) { 
      link = [link substringFromIndex:12]; //12 is the length of mylocalfile: 
      NSURL *url = [[NSBundle mainBundle] urlForResource:[link stringByDeletingPathExtension] withExtension:[link pathExtension]]; 
      [tmpLinks addObject:[url absoluteString]]; 
     } else [tmpLinks addObject:link]; 
    } 
    links = [tmpLinks copy]; 
    [tmpLinks release]; 
    [links writeToFile:pathToStoredFile atomically:NO]; 
} 
0

是的,我會去用一個UIWebView。如有必要,iOS應該能夠自動處理某些URL處理程序,其餘應用程序可以使用register to handle

iOS知道如何處理某些文件類型。例如,如果Safari(或一個UIWebView)遇到http://somesite.com/afile.pdf,它知道哪些應用程序可以處理文件類型。另一個例子是電話號碼:skype://8005555555。 iOS知道打開Skype並將號碼傳遞給它。 iOS也知道iBooks可以處理PDf文件。

爲適當的文件處理程序和類型註冊您的應用程序。然後,用戶可以點擊並按住鏈接查看可用應用程序的菜單以處理鏈接。如果這是一個僅由一個應用程序使用的鏈接,則用戶甚至不需要保持,只需點按即可。

就製作指向本地文件的鏈接而言,您可以使用C函數NSDocumentsDirectory()並將其附加到URL處理程序。 (例如:http://NSDocumentsDirectory()/filename.pdf

+0

謝謝你的回答,但我真的不明白。我可以創建一個由UIWebView處理的鏈接來加載本地的PDF嗎?我會怎麼做?你有我的起點或信息來源嗎? – Thijs 2011-01-11 20:18:18

相關問題