我有一個iOS應用程序,在一個點上打開一個網站鏈接到一個web視圖。這些鏈接保存在plist文件中(所以隨着應用程序的發展,它們很容易維護)。接下來我想要做的就是鏈接到保存在應用程序中的PDF(或任何文本格式的圖片,甚至是html格式,這是靈活的)。我想盡可能地在現有的應用程序結構中做到這一點。那麼,是否有可能創建一個可以作爲網頁鏈接放入plist的鏈接,而是在設備本身上打開一個文件(可能在webview中)?我會怎麼做呢?有任何想法嗎?鏈接到應用程序內的PDF
Thanx提前爲您提供幫助!
我有一個iOS應用程序,在一個點上打開一個網站鏈接到一個web視圖。這些鏈接保存在plist文件中(所以隨着應用程序的發展,它們很容易維護)。接下來我想要做的就是鏈接到保存在應用程序中的PDF(或任何文本格式的圖片,甚至是html格式,這是靈活的)。我想盡可能地在現有的應用程序結構中做到這一點。那麼,是否有可能創建一個可以作爲網頁鏈接放入plist的鏈接,而是在設備本身上打開一個文件(可能在webview中)?我會怎麼做呢?有任何想法嗎?鏈接到應用程序內的PDF
Thanx提前爲您提供幫助!
您需要在運行時創建鏈接。我會建議有一個本地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];
}
是的,我會去用一個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
)
謝謝你的回答,但我真的不明白。我可以創建一個由UIWebView處理的鏈接來加載本地的PDF嗎?我會怎麼做?你有我的起點或信息來源嗎? – Thijs 2011-01-11 20:18:18