我有一个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