Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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 NSStackView仅显示最新的自定义视图_Objective C_Macos_Cocoa_Nsstackview - Fatal编程技术网

Objective c NSStackView仅显示最新的自定义视图

Objective c NSStackView仅显示最新的自定义视图,objective-c,macos,cocoa,nsstackview,Objective C,Macos,Cocoa,Nsstackview,我有一个自定义视图控制器类。我想实例化多个自定义视图控制器,并将其视图添加到我的NSStackView中。我通过单击按钮向堆栈视图添加新视图。该按钮调用此方法: [stackView insertView:myCustomViewController.view atIndex:0 inGravity:NSStackViewGravityBottom]; 但是,添加新视图时,它会添加到上一个视图下方的stackView.spating,但上一个视图不再可见,但它仍然作为我的底部重力视图列出,这在

我有一个自定义视图控制器类。我想实例化多个自定义视图控制器,并将其视图添加到我的NSStackView中。我通过单击按钮向堆栈视图添加新视图。该按钮调用此方法:

[stackView insertView:myCustomViewController.view atIndex:0 inGravity:NSStackViewGravityBottom];
但是,添加新视图时,它会添加到上一个视图下方的
stackView.spating
,但上一个视图不再可见,但它仍然作为我的底部重力视图列出,这在我调用

NSLog(@"%lu",(unsigned long)[stackView viewsInGravity:NSStackViewGravityBottom].count);
如果我尝试添加
NSButton
s,我不会遇到这个问题,因此这与我的自定义视图有关,但我不知道是什么


请帮忙。谢谢

您应该检查自定义视图是否具有完全定义视图高度的约束(或内部内容大小)。如果不这样做,这些视图将塌陷到0高度(我以前也遇到过同样的情况)

您可以通过以下方式检查是否发生这种情况:

[stackView insertView:myCustomViewController.view atIndex:0 inGravity:NSStackViewGravityBottom];
[stackView layoutSubtreeIfNeeded];
NSLog(@"%f - %d", NSHeight(myCustomViewController.view.frame), [myCustomViewController.view hasAmbiguousLayout]);

使用StackView,您将看到后面的版本打印“0-1”。高度是0,它们是不明确的


垂直NSStackView只垂直放置视图,但不提供特定高度。(水平堆栈视图和宽度相同)。

您应该检查自定义视图是否具有完全定义视图高度的约束(或固有内容大小)。如果不这样做,这些视图将塌陷到0高度(我以前也遇到过同样的情况)

您可以通过以下方式检查是否发生这种情况:

[stackView insertView:myCustomViewController.view atIndex:0 inGravity:NSStackViewGravityBottom];
[stackView layoutSubtreeIfNeeded];
NSLog(@"%f - %d", NSHeight(myCustomViewController.view.frame), [myCustomViewController.view hasAmbiguousLayout]);

使用StackView,您将看到后面的版本打印“0-1”。高度是0,它们是不明确的


垂直NSStackView只垂直放置视图,但不提供特定高度。(水平堆栈视图和宽度相同)。

这并不能解决我的问题-我通过编程方式将NSTextField添加到堆栈视图中,但仅显示一个,并且堆栈视图未正确调整子视图的大小。如果我将它们添加到IB中,它们可以正常工作。这并不能解决我的问题-我通过编程方式将NSTextField添加到stackView中,但只显示一个,并且stackView没有正确调整子视图的大小。如果我将它们添加到IB中,它们工作得很好。