Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 隐藏NSApplication窗口的内容视图,以便导航到主屏幕_Cocoa_Hidden_Nswindow_Setcontentview - Fatal编程技术网

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

Cocoa 隐藏NSApplication窗口的内容视图,以便导航到主屏幕,cocoa,hidden,nswindow,setcontentview,Cocoa,Hidden,Nswindow,Setcontentview,最初,我在应用程序主窗口上有自己的设置,即图像视图(用于背景)和一组按钮。现在,当用户点击按钮时,相应的课程启动,即用户被导航到相应的屏幕,即我将视图添加到窗口的内容视图中 [self.window.contentView addSubview:self.lessonScreen.view]; 事实上,我知道有一种在窗口上获取视图(自定义视图)的方法,不断地将视图添加到其中(用于导航)。然后,为了导航到主屏幕(窗口),我们可以简单地隐藏该视图。但我遵循的是通过window的内容视图添加视图的方

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

[self.window.contentView addSubview:self.lessonScreen.view];
事实上,我知道有一种在窗口上获取视图(自定义视图)的方法,不断地将视图添加到其中(用于导航)。然后,为了导航到主屏幕(窗口),我们可以简单地隐藏该视图。但我遵循的是通过window的内容视图添加视图的方法

但是视图添加得很好,但我无法导航到主屏幕,我尝试了各种方法,下面是我采用的方法之一:

[[window contentView] setHidden:YES];
现在,窗口变为空白,主视图也消失了

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

我也遇到过一些问题,但这些问题并没有解决我的问题

有人能给我建议一种从主窗口删除内容视图的方法,以便跳转到我的主屏幕,因为我有用于用户导航的主菜单按钮


非常感谢您的帮助:)

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

- (IBAction)deliteAllSubviews:(id)sender {

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

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

<>我的基本基础不正确,以前我没有创建自己的类来处理主视图控制器。这就是事情变得奇怪的原因

只需通过创建自己的NSViewController类来创建主菜单视图,然后通过添加appDelegate文件的
-(void)applicationdFinishLaunching:(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]是我们的AppDelegate类的实例,即:

+(AppDelegate *)sharedInstance
{
    if (!sharedAppDelegate) {
        sharedAppDelegate = (AppDelegate *)[[NSApplication sharedApplication]delegate];
    }
    return sharedAppDelegate;
}
就这样,我们现在可以在单击主题或主菜单按钮时将用户导航到主屏幕:)


希望它能有所帮助,感谢所有人的关心:)

你想做什么?您想用另一个视图替换一个视图吗?最初我们有一个窗口(主屏幕),对吗?在此基础上,我进行了视图设置,即带有背景的图像视图、按钮等。现在,当按下按钮时,我通过访问windows内容视图添加子视图属性导航到相应的视图。这就是我们一直在做的,现在我在视图下面有一个主菜单按钮,如果我点击该按钮,我应该进入主菜单(主窗口)屏幕,即删除所有内容视图作为警告,不要对无关的问题发表垃圾评论,要求人们回答你的问题。我刚刚删除了一堆,因为它们被标记在整个站点上。这将删除window.contentView的所有子视图。只需比较视图对象(要删除)和使用removefrom superview即可。崩溃:在枚举时发生了变异。添加NSMutableArray*arrtoDelete=[views mutablecopy];在进行for循环之前,请尝试again@Student如前所述,面对空白屏幕问题,即我无法查看我的主屏幕(主窗口),请允许我们。