gpt4 book ai didi

iphone - ViewController 作为 subview

转载 作者:行者123 更新时间:2023-11-28 19:17:42 25 4
gpt4 key购买 nike

我有一个 UIViewController (DownloadManager),它使用 UIWebView 下载网页并显示下载的内容(例如 pdf 文件)。我想将其用作可重用组件。

我有另一个 UIViewController 指向一个包含 4 个按钮的屏幕,每个按钮应该从网页下载并显示一个 pdf 文件。我想将下载的 pdf 作为嵌入式 subview 显示到当前屏幕。基本上不要导航。

这里我尝试使用 DownloadManager 作为 subview 并显示 pdf 作为 subview 。它工作正常。

  1. 我按照屏幕第一个 View Controller 阅读。但是我仍然可以使用这种方法吗?

  2. 我必须从此屏幕发送电子邮件反馈。一旦我展示 MFMailComposeViewController,之前的下载管理器 subview 就会消失 从技术上讲,这里发生了什么?

请在下面找到代码片段:

//************************************************
@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;
}

最佳答案

将下载功能和显示分成两个不同的类会更加稳健。

理想情况下,您应该有一个像“Downloader”或“Download Manager”这样的类,它是 NSObject 的子类/强>。此类应执行下载并在完成时通知其委托(delegate)。然后,您可以拥有任意数量的 UIViewController,以利用您的 Downloader 类。

关于iphone - ViewController 作为 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com