У меня есть один UIViewController
(DownloadManager), который загружает веб-страницу с UIWebView
и отображает загруженный контент (скажем, файл pdf). Я хочу использовать его как компонент многократного использования.ViewController as Subview
У меня есть еще один UIViewController
, указывающий на экран, который содержит 4 кнопки, каждая кнопка должна загружать и отображать один файл pdf с веб-страницы. Я хочу отобразить загруженный pdf в качестве встроенного subview на текущий экран. В принципе не хотят навигации.
Здесь я попытался использовать DownloadManager как subview и отобразить pdf как subview. Его работа прекрасна.
Я прочитал как на экране один Вид контроллера. Но все-таки я могу использовать этот подход?
Я должен отправить электронную почту с этого экрана. Как только я представляю 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;
}
Хорошо спасибо. Я новичок в программировании на iOS. Я почти на конечной стадии доставки приложений. Итак, как насчет второго случая. почему диспетчер загрузки отсутствует в MyViewController после представления почтового композитора? – Srivathsa
Я думаю, это потому, что теоретически у вас должен быть только один контроллер вида, и он путается. Удивительно, что он работал в первую очередь. – Mundi
Просмотр контроллера должен контролировать логику, чтобы отобразить представление. Выделенный диспетчер загрузки (в идеале singleton?) По определению является объектом на уровне данных (данных). –