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
Cocoa 根据窗口状态设置视图背景色_Cocoa_Cocoa Design Patterns - Fatal编程技术网

Cocoa 根据窗口状态设置视图背景色

Cocoa 根据窗口状态设置视图背景色,cocoa,cocoa-design-patterns,Cocoa,Cocoa Design Patterns,在许多应用程序(例如邮件)中使用的标准源代码视图样式侧栏在窗口处于活动状态时为蓝色,在其处于非活动状态时为蓝色-跟随标题栏的状态更改 出于各种原因,我开发了一个自定义侧栏,但仍然希望在背景中使用相同的效果 其想法是制作一个填充背景的自定义NSView,并将其用作侧栏的背景。我给了它一个我想要设置的属性“active”,draw方法用两个不同的渐变填充rect 现在,问题是:将这样一个视图与窗口状态挂钩的最佳方式是什么 苹果在邮件应用程序中使用的这个“侧栏”是一个NSOutlineView。在界面

在许多应用程序(例如邮件)中使用的标准源代码视图样式侧栏在窗口处于活动状态时为蓝色,在其处于非活动状态时为蓝色-跟随标题栏的状态更改

出于各种原因,我开发了一个自定义侧栏,但仍然希望在背景中使用相同的效果

其想法是制作一个填充背景的自定义
NSView
,并将其用作侧栏的背景。我给了它一个我想要设置的属性“active”,draw方法用两个不同的渐变填充rect

现在,问题是:将这样一个视图与窗口状态挂钩的最佳方式是什么

苹果在邮件应用程序中使用的这个“侧栏”是一个NSOutlineView。在界面生成器中,也可以通过将属性“Highlight”设置为“Source list”来使用此样式


如果您想制作自己的侧边栏,您可以收听和委派。有很多方法可以报告它们的状态

谢谢你的回答!我想我的怀疑是收到通知的最好方式。我的直觉告诉我,它应该在视图或控制器的层次结构中逐步渗透,让侧栏控制器直接注册以接收来自上层实体(如窗口或应用程序)的通知对我来说似乎有点像一条捷径。但也许这就是解决问题的方法?我只是把你的边栏作为观察者添加到通知中。例如:[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(yourMethod:)name:NSApplicationIDResignActiveNotification对象:nil];