Переключение одного представления в другое представление в отдельных customViews

У меня есть один CustomView в одном xib и два разных представления в двух разных xib. Я хочу отобразить эти два представления одно за другим в одном CustomeView. У меня есть объект NSView, который подключен к CustomView в файле .xib

@property (retain) IBOutlet NSView *mySubview;
@property (retain) NSViewController *viewController;

Способ открытия одного представления:

 -(IBAction)selectBookTicket:(id)sender
  {
      //setting status label to nil
      _viewController=[[NSViewController alloc] initWithNibName:@"BookTicket" bundle:nil];
      //loading bookTicket xib in custom view of NormalUserWindow
      [_mySubview addSubview:[_viewController view]];
  }

Способ открытия другого представления в том же CustomView:

-(IBAction)selectTicketCancellation:(id)sender
  {
      _viewController=[[NSViewController alloc] initWithNibName:@"CancelTicket" bundle:nil];
      //loading CancelTicket xib in custom view of NormalUserWindow
      [_mySubview addSubview:[_viewController view]];
  }

Когда я открываю любое представление в первый раз, оно правильно отображается в CustomView, но когда я пытаюсь открыть второе представление или такое же представление во второй раз, оно перекрывается с предыдущим открытым представлением.

Я пытался

[_mySubview removeFromSuperview]

Он полностью удаляет mySubview, я имею в виду, что когда бы ни было загружено представление, оно удаляется, но не позволяет отображать какие-либо представления после того, как это '[_mySubview removeFromSuperview]' будет выполнено.


person KrishnaTeja    schedule 27.03.2013    source источник


Ответы (1)


Вы должны удалить только представление, которое вы добавили из контроллера представления. Вместо этого попробуйте следующий код.

-(IBAction)selectTicketCancellation:(id)sender
  {
      [[_viewController view] removeFromSuperView];
      _viewController=[[NSViewController alloc] initWithNibName:@"CancelTicket" bundle:nil];
       //loading CancelTicket xib in custom view of NormalUserWindow
       [_mySubview addSubview:[_viewController view]];
  }

Выполнение [_mySubview removeFromSuperview] удалит ваше представление хоста (т. Е. То, которое отображает представления из других контроллеров представлений) из иерархии представлений, и это объясняет «запрет на отображение любой другой части подпредставлений».

person Suhas    schedule 27.03.2013