Wymuś programowi NSView ponowne rysowanie

Moja aplikacja ma dwa różne stany, a każdy stan będzie reprezentował NSView.

więc na raz wyświetlany jest tylko jeden widok, problem polega na tym, że przełączając się między widokami aplikacja nie wyświetla nowego stanu, dopóki nie zmieniam rozmiaru okna ręcznie!

Szukałem tego problemu i otrzymałem więcej niż jedno rozwiązanie, ale nic nie działało ze mną:

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


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

Zdefiniowałem nawet myView jako Outlet i nic nie działa.

a to jest mój kod

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 

questionAnswers(2)

yourAnswerToTheQuestion