【发布时间】:2011-09-05 21:38:58
【问题描述】:
首先,我是 Objective C 世界的新手,所以我的问题可能听起来很幼稚。甚至方法的结构也可能不太合适,所以请多多包涵。我相信我会随着我的前进而学习。
我有一个容器视图控制器“DeckViewController”,其中包含另一个视图控制器“CardDetails”。 CardDetails 有一个滚动视图,用于一次加载 3 个自定义 UIView (CustomWebView),其中加载了 HTML。在这些视图中加载的 HTML 包含图像,并且要求一旦用户单击页面中的任何图像,它就会在 QLPreviewController 中打开。我已将 HTML 中的所有图像包装在一个锚标记中,以确保 shouldStartLoadWithRequest 委托处理该图像的加载。
此处理程序是在 CustomWebView 类中编写的,我正在尝试使用 CustomWebView 的父视图控制器加载预览控制器,即 CardDetails。
我已经跟踪了代码,它产生了正确的值,但是模态视图控制器根本没有出现。我可能只是错过了一个小链接或错过了这里的全部内容。非常感谢帮助和指导。
shouldStartLoadWithRequest 委托处理程序的代码 sn-p 如下 -
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
NSString* strExtension;
NSLog(@"THE Path of the image %@",request);
NSString *imageName = [[[request URL] path] lastPathComponent];
NSArray *comt = [imageName componentsSeparatedByString:@"."];
strExtension = [comt objectAtIndex:[comt count]-1];
NSLog(@"file extension %@",strExtension);
if ([strExtension isEqualToString:@"png"] || [strExtension isEqualToString:@"jpeg"] || [strExtension isEqualToString:@"jpg"]) {
NSLog(@"######v %@",[[request URL] path]);
QLPreviewController *previewController = [[QLPreviewController alloc] init];
ImageViewController *imagecontrller = [[ImageViewController alloc] init];
previewController.dataSource = imagecontrller;
previewController.delegate = imagecontrller;
[imagecontrller setImageURL:[request URL]];
previewController.currentPreviewItemIndex = 0;
[parentvc.navigationController presentModalViewController:previewController animated:YES];
[previewController release];
UIAlertView* alertView=[[UIAlertView alloc] initWithTitle:@"Alert" message:imageName delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];
[alertView show];
[alertView release];
//[imagecontrller release];
return NO;
}else {
return YES;
}
}
【问题讨论】:
-
您可能希望对问题中的文本进行一些结构化,使其更易于阅读。以某些部分为例。
-
感谢您指出。我以后一定会这样做的。
标签: cocoa-touch uiviewcontroller uikit