我有NSSplitView
的委托方法,如下所示:
- (void)splitViewWillResizeSubviews:(NSNotification *)aNotification
{
NSLog(@"RESIZE!");
}
每当我拖动分隔符时都会调用此方法,因此它已正确注册。我想从另一个对象中调用它,并且正在考虑使用它:
[[NSNotificationCenter defaultCenter] postNotificationName:NSSplitViewWillResizeSubviewsNotification object:self];
根据Apple文档,这是应该发送以调用委托方法的通知。但是,它不起作用。有谁知道我做错了什么?
答案 0 :(得分:1)
您可以手动调用该方法
NSSplitView * yourSplitView; //Get reference to your splitview
id yourSplitViewDelegate = [yourSplitView delegate];
[yourSplitViewDelegate splitViewWillResizeSubviews:nil];//Optionally create the NSNotification with relevant data
如果您真的想通过通知中心,请确保问题中的self
是NSSplitView。
NSSplitView * yourSplitView; //Get reference to your splitview
[[NSNotificationCenter defaultCenter] postNotificationName:NSSplitViewWillResizeSubviewsNotification object:yourSplitView];
答案 1 :(得分:0)
原来我需要手动注册NSSplitViewWillResizeSubviewsNotification
通知的委托类!
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(splitViewWillResizeSubviews:)
name:NSSplitViewWillResizeSubviewsNotification
object:vc];
其中vc是应该发送通知的viewcontroller。
这是意外行为(对我而言),因为<NSSplitViewDelegate>
预计会自动注册NSSplitView...
次通知。