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
Objective c 如何在Cocoa桌面应用程序中实际创建和加载多个视图?_Objective C_Cocoa - Fatal编程技术网

Objective c 如何在Cocoa桌面应用程序中实际创建和加载多个视图?

Objective c 如何在Cocoa桌面应用程序中实际创建和加载多个视图?,objective-c,cocoa,Objective C,Cocoa,我一直在尝试创建多个自定义视图来生成XIB并将控制器连接到它们。 我试过类似的方法 [window AddSubView:view0] [窗口添加子视图:视图0] 及 [窗口设置内容视图:视图0] 但我仍然无法显示新视图 自从创建了xib文件以来,我认为我做错了 从创建xib文件和控制器到显示自定义视图的正确方法是什么 感谢您的帮助。Aaron Hillegass-MacOS X的可可编程(第三版),第29章。视图交换Aaron Hillegass-MacOS X的Cocoa编程(第三版),第2

我一直在尝试创建多个自定义视图来生成XIB并将控制器连接到它们。 我试过类似的方法
[window AddSubView:view0]
[窗口添加子视图:视图0]

[窗口设置内容视图:视图0]

但我仍然无法显示新视图

自从创建了xib文件以来,我认为我做错了

从创建xib文件和控制器到显示自定义视图的正确方法是什么


感谢您的帮助。

Aaron Hillegass-MacOS X的可可编程(第三版),第29章。视图交换

Aaron Hillegass-MacOS X的Cocoa编程(第三版),第29章。视图交换

窗口不是Cocoa中的视图,并且没有任何响应
AddSubView:
。(请记住,选择器区分大小写。)

这是有效的,但您需要确保
view0
的框架与
窗口的内容矩形大小相同

但我仍然无法显示新视图

一种可能是你实际上并不是在和窗户说话。您可能尚未连接
窗口
插座,或者尚未加载带有该窗口的nib,或者,如果
窗口
不是插座且该窗口不存在于nib中,则尚未在代码中创建它。无论哪种方式,您的
窗口
变量都是
nil
,因此您正在向
nil
发送消息,例如
addSubview:
,而这不起任何作用

如果您已经用
NSLog
或调试器证明了您确实有一个窗口可以向其发送消息,但仍然存在问题,请确保您正在订购该窗口。如果窗口位于nib中,您可能希望启用“启动时可见”(实际上意味着“nib加载时可见”);否则,通过发送
MakeKeyandDerfront:
消息,自行订购窗口

窗口不是Cocoa中的视图,并且没有任何响应
AddSubView:
。(请记住,选择器区分大小写。)

这是有效的,但您需要确保
view0
的框架与
窗口的内容矩形大小相同

但我仍然无法显示新视图

一种可能是你实际上并不是在和窗户说话。您可能尚未连接
窗口
插座,或者尚未加载带有该窗口的nib,或者,如果
窗口
不是插座且该窗口不存在于nib中,则尚未在代码中创建它。无论哪种方式,您的
窗口
变量都是
nil
,因此您正在向
nil
发送消息,例如
addSubview:
,而这不起任何作用


如果您已经用
NSLog
或调试器证明了您确实有一个窗口可以向其发送消息,但仍然存在问题,请确保您正在订购该窗口。如果窗口位于nib中,您可能希望启用“启动时可见”(实际上意味着“nib加载时可见”);否则,通过发送一条
makekey和derfront:
消息,在您自己的窗口中订购。

我们将在稍后。。。努力研究我让事情按照我想要的方式进行

这是我的密码


- (IBAction)showFirstView:(id)sender{
    theDetailViewController = [DetailViewController new];
    [theDetailViewController initWithNibName:@"DetailView" bundle:nil];
    NSView *splitRightView = [[theSplitView subviews] objectAtIndex:1];
    NSView *aDetailView = [theDetailViewController view];
    [aDetailView setFrame:[splitRightView bounds]];
    [aDetailView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
    [splitRightView addSubview:aDetailView];
    NSLog(@"%@",(NSString *)splitRightView);
}
我做错的是将类创建为NSView而不是NSViewController 尝试像那样加载视图,但需要创建一个NSViewController并将其设置为自定义视图XIB的文件所有者类,然后将outlet视图设置为指向自定义视图


谢谢你的帮助。

我们会找一些。。。努力研究我让事情按照我想要的方式进行

这是我的密码


- (IBAction)showFirstView:(id)sender{
    theDetailViewController = [DetailViewController new];
    [theDetailViewController initWithNibName:@"DetailView" bundle:nil];
    NSView *splitRightView = [[theSplitView subviews] objectAtIndex:1];
    NSView *aDetailView = [theDetailViewController view];
    [aDetailView setFrame:[splitRightView bounds]];
    [aDetailView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
    [splitRightView addSubview:aDetailView];
    NSLog(@"%@",(NSString *)splitRightView);
}
我做错的是将类创建为NSView而不是NSViewController 尝试像那样加载视图,但需要创建一个NSViewController并将其设置为自定义视图XIB的文件所有者类,然后将outlet视图设置为指向自定义视图


感谢您的帮助。

验证view0是否在Interface Builder中正确连接,或者如果它是手动创建的,请向我们显示创建它的代码。验证view0是否在Interface Builder中正确连接,或者如果它是手动创建的,请向我们显示创建它的代码。
[window setContentView:view0]

- (IBAction)showFirstView:(id)sender{
    theDetailViewController = [DetailViewController new];
    [theDetailViewController initWithNibName:@"DetailView" bundle:nil];
    NSView *splitRightView = [[theSplitView subviews] objectAtIndex:1];
    NSView *aDetailView = [theDetailViewController view];
    [aDetailView setFrame:[splitRightView bounds]];
    [aDetailView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
    [splitRightView addSubview:aDetailView];
    NSLog(@"%@",(NSString *)splitRightView);
}