gpt4 book ai didi

objective-c - NSOutlineView 子类中内容更改时的通知

转载 作者:行者123 更新时间:2023-12-03 17:24:13 26 4
gpt4 key购买 nike

我想对 NSOutlineView 进行子类化,以便在还没有内容时在其中间显示一个标签。很像 XCode 中的检查器:

enter image description here

显然我不能使用委托(delegate)方法,因为我将其作为子类实现,并且在使用此类时必须能够将委托(delegate)设置为其他内容。

除了bounds属性的变化之外,我没有发现任何可以观察到的通知,但这不太可靠。

最佳答案

我最终重写了 NSOutlineView 的几个方法来注入(inject)我的代码。这不是一个非常优雅的解决方案,但它确实有效。如果有人有更好的解决方案,请告诉我,我可能会接受您的答案。

- (void)updateEmptyLabelVisibility {
int r = [[self dataSource] outlineView:self numberOfChildrenOfItem:nil];
BOOL hasRows = r > 0;
_emptyLabel.hidden = hasRows;
}

- (void)reloadItem:(id)item {
[super reloadItem:item];
[self updateEmptyLabelVisibility];
}

- (void)reloadData {
[super reloadData];
[self updateEmptyLabelVisibility];
}

- (void)awakeFromNib {
[super awakeFromNib];
[self updateEmptyLabelVisibility];
}

- (void)endUpdates {
[super endUpdates];
[self updateEmptyLabelVisibility];
}

关于objective-c - NSOutlineView 子类中内容更改时的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11493568/

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