隐藏NSApplication窗口的内容视图以导航到主屏幕

时间:2014-07-02 13:46:18

标签: cocoa hidden nswindow setcontentview

最初我在应用程序主窗口上有自己的设置,即图像视图(用于背景),在其上我有一组按钮。现在当用户点击按钮时,启动相应的课程,即用户被导航到相应的屏幕,即我将视图添加到窗口的内容视图....

[self.window.contentView addSubview:self.lessonScreen.view];

实际上我知道有一种在窗口上进行视图(自定义视图)的方法,继续添加我们的视图(用于导航)。然后,为了导航到主屏幕(窗口),我们可以简单地隐藏该视图。但我遵循通过窗口内容视图添加视图的方法。

然而,视图得到了很好的补充,但我无法导航到主屏幕,我尝试了各种方法,以下是我遵循的方法之一:

[[window contentView] setHidden:YES];

现在发生的事情是窗口变成空白,主视图也消失了。

我还尝试在Windows内容视图子视图中枚举视图并删除相同的内容,但是我遇到了崩溃,在这种情况下也会出现更多相同的空白屏幕:(

我也遇到了问题herethere,这些问题并没有解决我的问题。

有人可以建议我从主窗口中删除内容视图以跳转到我的主屏幕,因为我有用于用户导航的主菜单按钮。

非常感谢任何帮助,谢谢:)

2 个答案:

答案 0 :(得分:0)

将此方法连接到相应的按钮或菜单项

- (IBAction)deliteAllSubviews:(id)sender {

    NSArray* views = [[window contentView]subviews];

    for (NSView* view in views) {   
        [view removeFromSuperview];
    }
}

答案 1 :(得分:0)

我的基础不合适,之前我没有创建自己的类来处理主视图控制器。这就是事情变得怪异的原因。

通过创建我们自己的NSViewController类来创建我们的主菜单视图,然后通过添加appDelegate文件的- (void)applicationDidFinishLaunching:(NSNotification *)aNotification方法添加相同的窗口内容视图,即:

self.mainViewController = [[MainViewController alloc]initWithNibName:@"MainViewController" bundle:nil];
self.window.contentView = _mainViewController.view;

既然我们已经开始将自己的视图添加到窗口的内容视图中,为了导航到主屏幕,我们不需要隐藏内容视图,而是将我们的主视图指定为窗口的内容视图:

-(IBAction)topicButton:(id)sender
{
    [AppDelegate sharedInstance].mainViewController = [[MainViewController alloc]initWithNibName:@"MainViewController" bundle:nil];
    [[AppDelegate sharedInstance].window setContentView:[AppDelegate sharedInstanceofAppDelegate].mainViewController.view];
}

注意:这里[AppDelegate sharedInstance]是我们的app委托类的实例,即:

+(AppDelegate *)sharedInstance
{
    if (!sharedAppDelegate) {
        sharedAppDelegate = (AppDelegate *)[[NSApplication sharedApplication]delegate];
    }
    return sharedAppDelegate;
}

就是这样,当点击主题或主菜单按钮时,我们现在可以将用户导航到主屏幕:)

希望它有所帮助,感谢关注的一方和所有人:)