Webページをダウンロードしてダウンロードしたコンテンツ(PDFファイルなど)を表示するものUIViewController
(DownloadManager)があります。UIWebView
再利用可能なコンポーネントとして使いたいです。
私は、UIViewController
各ボタンがWebページから1つのPDFファイルをダウンロードして表示する必要がある4つのボタンを含む画面を指している別のものを持っています。ダウンロードしたPDFを現在の画面に埋め込まれたサブビューとして表示したい。基本的にナビゲーションは必要ありません。
ここでは、DownloadManagerをサブビューとして使用し、PDFをサブビューとして表示しようとしました。その正常に動作します。
画面ごとに1つのViewControllerと読みました。しかし、それでもこのアプローチを使用できますか?
この画面からフィードバックをメールで送信する必要があります。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;
}