Модальный UIViewController не появляется - PullRequest
2 голосов
/ 12 декабря 2010

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

Первый контроллер на самом деле является 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]; 
    }   

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

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

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

Также ... 1-й контроллер модального вида (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

и ... 2-й контроллер модального представления (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]; 

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

1 Ответ

1 голос
/ 12 декабря 2010

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

...