【发布时间】:2013-11-12 16:24:47
【问题描述】:
我的应用有两种不同的状态,每个状态都用一个 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
【问题讨论】:
-
setNeedsDisplay:YES是正确的方法。 -
我试过了,可惜没用:(
-
请使用它并显示您正在使用它的代码,我相信有人可以从那里拿走它。
标签: objective-c macos cocoa nsview