2

Я пытаюсь загрузить Modal View Controller (1-й) из Modal View Controller (2nd). Хотя это звучит сложно, это, вероятно, не так.Модальный UIViewController не отображается

1-й контроллер фактически UIWebView, который инициализируется в методе loadView файла .m:

- (void)loadView { 

    // Initialize webview and add as a subview to LandscapeController's view 
    myWebView = [[[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease]; 
    //CGRect forceframe = CGRectMake(0, 0, 480, 320); 
    //myWebView = [[[UIWebView alloc] initWithFrame:forceframe] autorelease]; 
    myWebView.scalesPageToFit = YES; 
    myWebView.autoresizesSubviews = YES; 
    myWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 
    myWebView.delegate = self; 
    self.view = myWebView; 
} 

Тогда в viewDidLoad:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // Load HTML file as an NSURL request 
    [self.myWebView loadHTMLString:updated_html baseURL:nil]; 

    // Invoke the covering modal view on condition 
    if (some_condition) { 
     landscapeCoverController = [[UIViewController alloc] initWithNibName:@"LandscapeCoverController" bundle:[NSBundle mainBundle]]; 

     [self presentModalViewController:landscapeCoverController animated:YES]; 
     [landscapeCoverController release]; 
    } 

Намеченного 2nd Модального View Controller (landscapeCoverController) инициализируется с помощью NIB, который я установил в IB.

Целью этого является условное закрытие UIWebView с представлением «LandscapeCoverController», которое будет иметь некоторые кнопки и интерактивность, что приведет к увольнению второго модального представления.

Почему мой пейзаж не загружается? Любые мысли очень оценили!

Также ... 1-й модальный контроллер View (LandscapeViewController) .h выглядит следующим образом:

@class LandscapeCoverController; 

@interface LandscapeViewController : UIViewController <UIWebViewDelegate> { 
    UIWebView *myWebView; 

    LandscapeViewController *landscapeCoverController; 
} 

@property (nonatomic, retain) UIWebView *myWebView; 

@property (nonatomic, retain) LandscapeViewController *landscapeCoverController; // Modal view controller 

и ... контроллер второго Модальные View (landscapeCoverController) viewDidLoad ничего не делает:

// NIB initialized in LandscapeViewController.m viewDidLoad: 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

} 

, как я думаю, что заявление

landscapeCoverController = [[UIViewController alloc] initWithNibName:@"LandscapeCoverController" bundle:[NSBundle mainBundle]]; 
[self presentModalViewController:landscapeCoverController animated:YES]; 
[landscapeCoverController release]; 

должен обрабатывать инициализацию и ло аддирование контроллера ...

+0

Является ли 'mainScreen' видом в вашем приложении? –

+0

@sudo rm -rf (nice name) mainScreen - это метод класса UIScreen, который возвращает объект UIScreen, представляющий границы экрана. – Jumhyn

ответ

1

Вы объявляете landscapeCoverController как экземпляр LandscapeViewController и выделяете его как UIViewController. Скорее всего, это ваша проблема (возможно, первая из них, поскольку вы не вызываете никаких методов, специфичных для LandscapeViewController). Кроме того, поскольку landscapeCoverController является переменной экземпляра, вам действительно не нужно его выпускать после presentModalViewController. Попытайтесь выбрать более разнородные имена классов. В будущем это избавит вас от путаницы.

+0

Спасибо, что поймали это! Да, изменил тип с LandscapeViewController на LandscapeCoverController. По-прежнему не отображается представление контроллера крышки ... Ландшафт (myWebView) выглядит отлично - он просто должен быть закрыт просмотром NIB CoverController ... – Sly

+1

Вы изменили landscapeCoverController = [[UIViewController ...] на landscapeCoverController = [[LandscapeCoverController ...]? И убедитесь, что у вас есть выход для просмотра в наборе IB. – Jumhyn

+0

Подтверждено, что я внес эти изменения, но все еще не вижу вид ландшафтаCoverController ... – Sly

Смежные вопросы