gpt4 book ai didi

objective-c - 获取 NSWindow 的所有 View 和 subview

转载 作者:太空狗 更新时间:2023-10-30 03:21:34 30 4
gpt4 key购买 nike

有没有一种方法可以获取 NSWindow 的所有 View 和 subview 以及这些 subview 的 subview (你懂的……)?

谢谢。

最佳答案

这是 NSView 上的一个类别:

@interface NSView (MDRecursiveSubviews)
- (NSArray *)md__allSubviews;
@end

@implementation NSView (MDRecursiveSubviews)

- (NSArray *)md__allSubviews {
NSMutableArray *allSubviews = [NSMutableArray arrayWithObject:self];
NSArray *subviews = [self subviews];
for (NSView *view in subviews) {
[allSubviews addObjectsFromArray:[view md__allSubviews]];
}
return [[allSubviews copy] autorelease];
}

@end

使用我用 View 层次结构创建的快速 nib 文件,它打印了这个:

[RecursiveSubviewsAppDelegate awakeFromNib] allSubviews == (
"<NSView: 0x10390dfd0>",
"<NSView: 0x103c07ae0>",
"<NSView: 0x100129cc0>",
"<NSButton: 0x100115ce0>",
"<NSButton: 0x100116900>",
"<NSButton: 0x1001165c0>",
"<NSButton: 0x100116130>",
"<NSButton: 0x100114ad0>",
"<NSButton: 0x100115910>",
"<NSButton: 0x100115090>",
"<NSScrollView: 0x103b07a30>",
"<NSClipView: 0x103b07d40>",
"<NSTextView: 0x103b083c0>\n
Frame = {{0.00, 0.00}, {159.00, 58.00}},
Bounds = {{0.00, 0.00}, {159.00, 58.00}}\n
Horizontally resizable: NO, Vertically resizable: YES\n
MinSize = {159.00, 58.00}, MaxSize = {463.00, 10000000.00}\n",
"<NSScroller: 0x1001145b0>",
"<NSScroller: 0x100114840>",
"<NSScrollView: 0x10390ea00>",
"<NSClipView: 0x10390ef10>",
"<NSTableView: 0x10390f570>",
"<NSScroller: 0x103b06f10>",
"<NSScroller: 0x103b07460>",
"<NSClipView: 0x1039105d0>",
"<NSTableHeaderView: 0x103910300>",
"<_NSCornerView: 0x103911c20>"

我应该补充的一个注意事项是,我不清楚这有什么用,除了作为调试工具。但即使那样,也可能有更简单的做事方式。

关于objective-c - 获取 NSWindow 的所有 View 和 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5446928/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com