问题标签 [nsviewcontroller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - 是否可以让 NSView 将 rightMouseDown: 传递给下一个响应者而不进行子类化?
我有一个包含几个子视图的视图:
mainView
是NSView
由 nib 构造的,并由NSViewController
子类控制。子视图是标准视图,例如NSTextField
和NSImageView
,并且配置为不可编辑。即使在其中一个子视图中触发事件,我也想mainView
接收。rightMouseDown:
rightMouseDown:
in的默认实现NSResponder
将事件传递给下一个响应者,但NSView
会更改默认行为并且不会将其传递给下一个响应者。
我可以对所有子视图进行子类化,但这似乎不是一个非常优雅或可维护的解决方案。
如何在rightMouseDown:
不对所有子视图进行子类化的情况下让子视图将消息传递给下一个响应者?
cocoa - 从不同的笔尖添加 NSView
当新视图位于不同的 xib 文件中时,如何添加子视图?
不同笔尖的类是一个 NSViewController,我self = [super initWithNibName:@"NewView" bundle:nil];
用来加载笔尖
我可以做类似的事情:
还是我必须做一些不同的事情
cocoa - NSView 没有从超级视图中删除
我有一个来自 NSViewController 的 NSView(我们称之为 view1)。超级视图(我们称之为 view2)位于 NSWindowController 中。问题是,我可以将 view1 添加到 view2,但无法删除它。
objective-c - 如何在 Cocoa 应用程序中切换视图?
所以我开始学习如何使用 Cocoa。我想我已经明白了,但我对创建和切换视图很感兴趣。我正在重写我之前制作的游戏以进行练习。我想要的只是一个窗口(最好不能调整大小),并且我希望能够在游戏中切换不同屏幕的视图。
首先,我有主菜单(开始游戏、高分、退出)。然后我需要每个屏幕(游戏屏幕,高分屏幕)都有一个窗口。
我感到困惑的是如何设计这个。我查找 NSViewController 认为它管理视图,但它没有。它只通过真正加载一个视图来管理它。我不明白为什么我需要使用 NSViewController 。难道我不能只有一个包含多个 NSView 子类的窗口类并像那样加载它们吗?我不确定我是否理解 ViewController 的用途。
我的窗口类真的需要继承 NSWindowController 吗?我试图遵循 Apple 的 ViewController 示例的示例,它有一个窗口控制器类,它是 NSWindowController 的子类。我不明白继承它的目的是什么。所有 NSWindowController 似乎都添加了,- initWithPath:(NSString *)newPath
但是当我可以编辑 plist 文件以在启动时打开窗口时,我看不到它的用途。Apple 的示例也有一个 NSView 变量和一个 NSViewController 变量。你不是只需要一个变量来存储当前视图吗?
在此先感谢各位,我真的很困惑这是如何工作的。
objective-c - 如何拥有一个 NSViewController 的视图内容取决于它的初始化方式?
这实际上是一个两部分的问题,希望我的解释清楚:
我有一个 NSViewController 可以配置为在其部分视图上显示不同的自定义视图。例如,它的视图可以显示 CustomViewA 或 CustomViewB。
我可以通过为每个自定义视图创建一个 NSViewController 并使用处理 CustomViewA 的 NSViewController 或处理 CustomViewB 的 NSViewController 初始化 MyViewController 来完成这项工作。我使用 NSBox 并将其 contentView 设置为给定 NSViewController 提供的视图。
这种方法的问题是我有一个 NSBox,它的 contentView 将保存“MyView”,然后在“MyView”内我有另一个 NSBox,它将保存 CustomViewA 或 CustomViewB。
另一个问题是我希望 MyViewController 能够同时处理 CustomViewA 和 CustomViewB,而不是为它们中的每一个设置一个单独的 NSViewController。
这是我当前解决方案的示例代码:
如何让我的 CustomViewA 和 CustomViewB 存在于 MyView.nib 中,并且它们都使用 MyViewController 作为它们的控制器?
我怎么能让主视图保存 MyView 而不是 NSBox?
提前致谢!
cocoa - 调整嵌套 NSView 的大小
为了对各种各样的独特视图进行分类,我进行了精心设置:通过工具栏选择主要类别,然后在类别的 NSScrollView 中选择特定窗格。这看起来像:窗口 -> NSViewController 控制五个视图 -> 每个视图的子 NSViewController 控制 X 视图 -> 每个视图都包含一个核心绘图图。简而言之,嵌套的 NSViewControllers 在几乎每条路径的末尾都有一个核心图 CPLayerHostingView。
在我回答我的问题之前,请随时指出这是一个糟糕的实现。就用户友好性而言,我认为这是有道理的,但是嵌套对象的绝对数量让我想知道是否有更好的方法。
现在,假设我已经以最好的方式设计了它,问题本身:假设我选择了一个类别,然后选择了一个子项目,并且正在查看一个渲染图。如果调整窗口大小,我希望图表能够适当地调整大小。在 Interface Builder 中,我已经做了一切必要的事情来实现这一点:从 CPLayerHostingView 到主窗口中的 NSView 的所有内容都已设置为在所有方向上自动调整大小。尽管如此,如果我在运行时调整大小,图形将保持静止,不会调整大小或移动。在具有零个或一个 NSView 层的设计中,这将更容易调试,但在这种情况下我没有想法。
我可以使用什么技巧,程序化或基于 IB 来确保 NSView 根据窗口调整大小来调整很多很多级别?
objective-c - QuickLook 消费者作为 NSViewController 的代表
我在QuickLook
从NSView
. 有限的文档QuickLook
真的没有任何帮助。
在阅读了Apple Docs(主要针对自定义生成器和插件)后,我最终查看了QuickLookDownloader 示例代码。此代码基于基于文档的应用程序,但对我来说似乎是正确的方法(毕竟它是 Apple 的代码,并且在他们的项目中确实有效)。
在我的实现中,我可以QuickLook panel
很好地显示它,并且我可以很容易地忽略它。但是,面板本身从不从 my 中调用委托方法NSViewController
。结果,我什至从来没有显示对象,只是“未选择项目”的措辞。我很难过。
我尝试调用 a setDelegate
,但如果我继续沿着那条路线前进,则会收到关于即将到来的厄运的警告......
[QL] QLError(): -[QLPreviewPanel setDelegate:] 在面板没有控制器时调用 - 修复此问题,否则此问题将很快引发。请参阅 QLPreviewPanel.h 中有关 -acceptsPreviewPanelControl:/-beginPreviewPanelControl:/-endPreviewPanelControl: 的注释。
然后在尝试响应委托方法之一时,无论如何都会发生厄运。
是的,我确实阅读了标题,确认我应该在赢得面板后设置委托(参见下面的代码)。
所以这是我的代码,它与示例代码几乎匹配,除了 a) 我从哪里获取数据(我从 a 获取它NSArrayController
)和 b) 我从哪里获取我的预览项目(我的直接来自我的模型对象- 或者无论如何应该)
问题似乎是acceptsPreviewPanelControl
永远不会被调用,所以代表永远不会被使用(他们绝对不会被调用)。
我确定这是我缺少的一个简单步骤,但是在剖析示例代码并浏览文档后,我看不到答案。
是因为这一切都来自 NSViewController (尽管我认为没有理由将其纳入等式)?
非常感谢任何和所有帮助。
解决方案更新
多亏了彼得的观察,修复很快。当调试器中的错误消息与它所说的一样时,您不讨厌它吗?:-)
在我加载的类中,MyViewController
我只需要添加三行代码来解决问题。
工作完成:-) 谢谢彼得。
cocoa - 从 NIB 加载 NSView 不起作用
我有这段代码可以从 NIB 加载 NSView 并将其添加到另一个 NSView:
所有插座都连接正确,但没有任何显示。我不明白为什么!有人能帮我吗?谢谢。
这是关于 NSViews,而不是 UIViews!
cocoa - NSView 高级概述?
我正在尝试创建自定义视图并将其加载到窗口中。
最后,我知道需要遵循几个步骤,反映我缺少的关键关系。我希望有人可以通过一系列步骤解释如何创建视图对象、视图控制器、关联的 .xib,然后将其加载到窗口中(在清除当前视图之后)。
我的意思是在哪里声明和初始化,需要导入什么,一切的真正细节。因为我正在翻阅我拥有的每一本书,而我那微不足道的大脑并不清楚。
谢谢!
objective-c - Cocoa NSPopupButton 问题
在我的 Cocoa 应用程序中,在一个视图中,我通过 Interface builder 添加了一个 NSPopupButton 并将其与源文件相应地链接,现在在代码中,我正在动态创建菜单并使用 NSPopupbutton 添加菜单,这是我在 WindowDidLoad 中完成的,请参考下面的代码
当我运行应用程序时,最初按钮是启用的,但是当我单击箭头时,包括菜单和按钮被禁用
请告诉我我做错了什么。