我有一个UIViewController
(DownloadManager),用UIWebView
下载网页并显示下载的内容(比如pdf文件)。我想将它用作可重用的组件。
我还有另一个UIViewController
指向一个屏幕,其中包含4个按钮,每个按钮应下载并显示一个来自网页的pdf文件。我想将下载的pdf显示为当前屏幕的嵌入式子视图。基本上不想导航。
这里我尝试使用DownloadManager作为子视图并将pdf显示为子视图。工作正常。
我在每个屏幕上看到一个View Controller。但是我仍然可以使用这种方法吗?
我必须从此屏幕发送电子邮件反馈。一旦我呈现MFMailComposeViewController,之前的下载管理器子视图就会在技术上消失这里发生了什么?
请在下面找到代码段:
//************************************************
@implement MyViewController
- (void) initWebView
{
downloadMgr = [[DownLoadViewController alloc] initWithNibName:@"DownLoadViewController" bundle:nil];
downloadMgr.view.frame = CGRectMake(140, 20, 300, 200);
downloadMgr.WebView.frame = CGRectMake(140, 20, 300, 200);
downloadMgr.view.backgroundColor = [UIColor whiteColor];
downloadMgr.WebView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:downloadMgr.view];
[self.view addSubview:downloadMgr.WebView];
}
----
----
- (IBAction)onHomeClick:(UIButton *)sender
{
switch (sender.tag)
{
case 101:
{
[self stopWebViewResources];
if (!downloadMgr) {
[self initWebView];
}
downloadMgr.NavigationURL = [[NSURL alloc] initWithString:@"https://xxx.yyyyyy.com/sites/pex/iPadFiles/abc.pdf"];
downloadMgr.title = @"ABC";
[downloadMgr LoadURL];
}
break;
case 120:
{
//Send feedback via email
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
mail.mailComposeDelegate = self;
----
----
mail.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentModalViewController:mail animated:YES];
}
}
}
}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
[self dismissModalViewControllerAnimated:YES];
}
@end
//*****************************************************************
@interface DownLoadViewController : UIViewController <MyWebViewDelegate>{
NSURL* NavigationURL;
IBOutlet myWebView* WebView;
IBOutlet UIActivityIndicatorView* ProgressView;
NSString* DownloadedFileName;
}
答案 0 :(得分:4)
将下载功能和显示分成两个不同的类会更加健壮。
理想情况下,您应该拥有“下载程序”或“下载管理器”这样的类,它是 NSObject
的子类。此类应完成下载并在完成后通知其委托。然后你可以拥有尽可能多的UIViewController
s利用你的Downloader类。