Заставить NSView перерисовать программно

Мое приложение имеет два разных состояния, и каждое состояние будет отображаться с помощью NSView.

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

Я искал об этой проблеме и пришел с более чем одним решением, но ничего не помогло мне:

[myView setNeedsDisplay:YES];
[myView display];
[[myView.window contentView] setNeedsDisplay:YES];


[mySubView1 setHidden:YES]; || [mySubView1 removeFromSuperView];

Я даже определил myView как Outlet, и ничего не работает.

и это мой код

if (appState == 1) {

    [self.splitView setFrameSize:CGSizeMake(self.splitView.frame.size.width, self.view.frame.size.height - 250)];

    [self.mySubView1 setHidden:NO];
    [self.mySubView2 setHidden:YES];

    [self.mySubView2 removeFromSuperview];
    [self.mySubView1 addSubview:self.inCallView];
}
else
{
    [self.splitView setFrameSize:CGSizeMake(self.splitView.frame.size.width, self.view.frame.size.height - 70)];

    [self.mySubView1 setHidden:YES];
    [self.mySubView2 setHidden:NO];

    [self.mySubView1 removeFromSuperview];
    [self.mySubView2 addSubview:self.chatHeaderView];
}
// I need to redraw here
[self.view setNeedsDisplay:YES];
[self.mySubView1 setNeedsDisplay:YES];
[self.mySubView2 setNeedsDisplay:YES];
// and nothing happened until I resize my window manually 

Ответы на вопрос(2)

Ваш ответ на вопрос