我有一个基于文档的应用程序,其中 NSSplitViewController 作为主窗口的内容视图控制器。
左窗格包含带有控制器的自定义视图,该控制器实现一些菜单命令。
右窗格包含一个带有控制器的标准 NSTableView。
当应用程序启动时,菜单命令按预期工作,但一旦选择了右侧表格视图中的任何内容,菜单命令就会被禁用。
如何确保左窗格的视图控制器保留在第一响应者链内?
我尝试将菜单命令直接连接到正确的视图控制器,但 IB 不允许连接到故事板中的另一个场景。我只能连接到同一场景中的对象。
Regards,
雷姆科·波尔斯特拉
连接到急救人员。
您可以通过在 NSSplitViewController 子类中实现 -[NSResponder SupplementalTargetForAction:sender:] 让所有子视图控制器响应操作:
- (id)supplementalTargetForAction:(SEL)action sender:(id)sender
{
id target = [super supplementalTargetForAction:action sender:sender];
if (target != nil) {
return target;
}
for (NSViewController *childViewController in self.childViewControllers) {
target = [NSApp targetForAction:action to:childViewController from:sender];
if (![target respondsToSelector:action]) {
target = [target supplementalTargetForAction:action sender:sender];
}
if ([target respondsToSelector:action]) {
return target;
}
}
return nil;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)