2012-05-22 1 views
0

Я использую presentModalViewController, чтобы попытаться отобразить UIView поверх некоторых других представлений. Я вызываю presentModalViewController из контроллера1. Я пытаюсь отобразить представления из контроллера2.iOS presentModalViewController, не позволяющий предыдущим представлениям отображаться через

От controller1 Слово controller2 следующим образом:

- (void) someButtonPressed: (id)sender 
{ 
    MyController* controller2 = [ [ MyController alloc ] initWithNibName:nil bundle:nil ]; 

    [self presentModalViewController:controller2 animated:YES]; 
    //[self presentViewController:controller2 animated:NO completion:nil ]; 
} 

В controller2 тогда я это сделать:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    if (YES){ 

     UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow]; 
     UIView* master = (UIView*)[keyWindow viewWithTag:100]; // Master is the entire app, but always oriented so top left corner is 0,0. 

     UIView* newView = [ [ UIView alloc ] initWithFrame:CGRectMake(100, 100, 400, 400) ]; 

     [self setView:newView ]; 

     self.view.backgroundColor = [ UIColor clearColor ]; 
    } 

} 

Проблема заключается в том, что ни один из контента из первого контроллера не показывает до конца. Я хочу, чтобы предыдущие представления оставались видимыми. Есть ли способ сделать вид со второго контроллера невидимым? Причина, по которой я хочу сделать это, - это то, что я хочу, чтобы второй контроллер/представление отображал прозрачный слой, который будет захватывать все события касания, не дойдя до представлений, управляемых контроллером1.

Большое спасибо.

ответ

0

Добавьте вид, как вид к югу, что будет работать:

- (void) someButtonPressed: (id)sender 
{ 
    MyController* controller2 = [ [ MyController alloc ] initWithNibName:nil bundle:nil ]; 

    [[self view] addSubview:[controller2 view]]; 
    // [controller2 release] if you aren't using ARC 

    //[self presentModalViewController:controller2 animated:YES]; 
    //[self presentViewController:controller2 animated:NO completion:nil ]; 
} 

Если вы используете viewDidAppear в controller2, поместите эту строку после addSubView линии:

[controller2 viewDidAppear:NO] 

То же самое для других viewDid методы;)