问题标签 [nsstoryboard]
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.
macos - 如何在 NSScrollView OS X (10.10) 中嵌入故事板视图控制器以制作复杂的检查器视图?
我正在看 WWDC 2014 视频,“ 212:OS X 上的故事板和控制器”。在这个视频中,他们声称 Pages UI 确实/可以使用 OS X 上的 Storyboards 进行排列(见下文)。
但是,在 Pages UI 中,检查器视图很长并且嵌入在滚动视图中(您可以在 Page.app 检查器视图中验证我的两指滚动),一些检查器项目本身也包含在(某种类型的自定义)中披露观点。似乎不可能在滚动视图中嵌入故事板视图控制器,因为没有对应于“滚动视图控制器”类。那正确吗?
故事板视图控制器的视图如何嵌入到故事板上的滚动视图中?
我已经尝试在运行时直接嵌入,但是,这非常hackish并且不能可靠地工作(自动布局的问题)。这条路线可能仍然可行,但我想在走得太远之前获得建议。对于真正的 UI,可能会退回到 XIB。
cocoa - 如何在显示工作表时启用撤消菜单项
我正在使用情节提要创建基于文档的核心数据 OSX 应用程序。撤消和重做工作正常,直到我在带有 segue 的工作表中呈现视图控制器。提交工作表后,撤消/重做按钮将灰显。
在寻找可能的解决方案时,我遇到了这篇文章,他们说我必须使用“windowWillReturnUndoManager:”委托方法为我的窗口提供一个撤消管理器。所以我在我的segue的sourceController中实现了这个方法,并在prepareForSegue方法中将该控制器设置为destinationController的窗口的委托,如下所示:
但是当我打开工作表时,撤消和重做按钮仍然是灰色的。请注意,将 segue 样式更改为 popover 时,撤消/重做工作正常。我该如何解决这个问题?
macos - 使用 NSArrayController 时得到“valueForUndefinedKey:此类与键错误的键值编码不兼容”
我正在使用 Swift 为 NSCollectionView 工作。当我使用 NSArrayController 对象作为 NSCollectionView 的内容时。我收到以下错误:
引发了未捕获的异常
[ valueForUndefinedKey:]:这个类对于键 plugName 不是键值编码兼容的。
我不知道为什么。我创建了一个名为 NHPlug 的模型和一个 NSArrayController 如下,这是我的代码。:
如果有人可以提供帮助,非常感谢!
如果崩溃堆栈在这里:
-01-21 19:47:07.347 Notifyhub [58369:598950] 引发未捕获的异常 2015-01-21 19:47:07.347 Notifyhub [58369:598950] [valueForUndefinedKey:]:此类不符合键值编码为关键 plugName 。2015-01-21 19:47:07.348 NotifyHub [58369:598950](0 corefoundation 0x00007fff9220b64c __ exceptionprepreocess
+ 172 1 libobjc.a.dylib
0x00000000007fff950959666dection_ectiry +192020220220220220220220220220220220220FYENEFENDENDENEFERFIIND +
7.F.
0x00007fff8bd6c5ed -[NSObject(NSKeyValueCoding) valueForUndefinedKey:] + 226 4 Foundation 0x00007fff8bc89e68 -[NSObject(NSKeyValueCoding) valueForKey:] + 385 5 Foundation 0x00007fff8bca28e3 -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 324 6 Foundation 0x00007fff8bca28af -[NSObject(NSKeyValueCoding) valueForKeyPath :] + 272 7 AppKit 0x00007fff8975c8bf -[NSBinder valueForBinding:resolveMarkersToPlaceholders:] + 164 8 AppKit
0x00007fff89760700 -[NSValueBinder _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:] + 302 9 AppKit 0x00007fff8976053b -[NSValueBinder _observeValueForKeyPath:ofObject:context:] + 276 10 AppKit 0x00007fff897603ab -[NSTextValueBinder _observeValueForKeyPath:ofObject:context:] + 43 11 基础 0x00007fff8bc63c73 NSKeyValueNotifyObserver + 382 12 基础
0x00007fff8bc62e48 NSKeyValueDidChange + 463 13 基础
0x00007fff8bc679ad -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] + 118 14 AppKit
0x00007fff89eb5e83 -[NSCollectionView newItemForRepresentedObject:] + 87 15 AppKit 0x00007fff89ebce03 -[NSCollectionView _getItemsToDisplay] + 1168 16 AppKit 0x00007fff89eb5595 -[NSCollectionView setContent:] + 217 17 AppKit
0x00007fff89e8e965 -[NSCollectionViewBinder _updateContent] + 93 18 AppKit 0x00007fff89e8e9f0 -[NSCollectionViewBinder _observeValueForKeyPath:ofObject:上下文:] + 84 19 基金会 0x00007fff8bc63c73 NSKeyValueNotifyObserver + 382 20 基金会
0x00007fff8bca22a6 -[NSObject(NSKeyValueObservingPrivate) _notifyObserversForKeyPath:change:] + 1142 21 AppKit 0x00007fff897533ba -[NSController _notifyObserversForKeyPath:change:] + 206 22 AppKit 0x00007fff8984f126 -[NSArrayController didChangeValuesForArrangedKeys:objectKeys:indexKeys:] + 54 23 AppKit 0x00007fff89a1dbd0 -[NSArrayController _insertObject: atArrangedObjectIndex:objectHandler:] + 514 24 AppKit 0x00007fff89a1d82c -[NSArrayController addObject:] + 153 25 Notifyhub 0x000000010000166a _TFC9Notifyhub15NHAppController12awakeFromNibfS0_FT_T_ + 362 26 Notifyhub 0x00000001000016d2 _TToFC9Notifyhub15NHAppController12awakeFromNibfS0_FT_T_ + 34 27 CoreFoundation 0x00007fff9211983f -[NSSet makeObjectsPerformSelector:] + 223 28 AppKit
0x00007fff89ba2ffd -[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] + 1216 29 AppKit
0x00007fff89c22122 -[NSNib _instantiateNibWithExternalNameTable:options:] + 677 30 AppKit 0x00007fff89c22236 -[NSNib _instantiateWithOwner:options:topLevelObjects:] + 143 31 AppKit 0x00007fff89d5f36c -[NSStoryboard instantiateControllerWithIdentifier:] + 181 32 AppKit
0x00007fff896afef4 NSApplicationMain + 840 33 Notifyhub
0x00000001000011c2 top_level_code + 34 34 Notifyhub
0x00000001000011fa main + 42 35 libdyld.dyli
cocoa - 在情节提要中跨场景为 NSTableView 设置数据源
我在 OS X 10.10 上使用 XCode 6,并且有一个故事板,其中包含一个带有拆分视图控制器的窗口,如下图所示。
拆分视图控制器(在图像中突出显示)是 的一个实例MyViewController
,它具有以下代码:
MyViewController.h
我的视图控制器.m
我想在我的故事板中制作视图控制器dataSource
,NSTableView
但是我无法连接它们。是否有一个原因?
macos - 以编程方式呈现视图控制器 OS X
所以也许这很容易而且我很密集但是..
我正在尝试从我的 MenuBarController 以编程方式打开一个显示在我的 main.storyboard 上的视图控制器。视图控制器没有附加任何 segues,但我给视图控制器一个故事板 ID 测试。
这是针对 OS X 的,所以很抱歉我是故事板和 Segue 功能的新手。
我一直在尝试这个:
但是收到一个错误:
[NSNib initWithNibNamed:bundle:] 无法加载 nibName: TestApp.MenuBarController in bundle (null)。
xcode - 为什么我不能将我的菜单连接到我的视图控制器 IBAction?
我有一个基于文档的应用程序。我刚刚在我的视图控制器中的情节提要和 IBActions 中创建了菜单项。但是,我将动作连接到目标的通常方式不起作用
这是我从菜单项中按 Ctrl 并鼠标从菜单单击到视图控制器时看到的内容。它没有显示我的 IBActions。
任何的想法 ?我的 2 美分猜测是它与基于文档的应用程序有关,但......不太确定
automatic-ref-counting - 绑定出口时 NSViewController 未解除分配
我有以下文件:
主故事板
这与创建新项目时创建的默认故事板相同,但添加了一些内容:视图中有一个按钮,连接到button
视图控制器的出口(的实例ViewController
)和doTheThing:
视图控制器上的操作。
视图控制器.m
另一个故事板
一个包含单个场景(视图控制器 + 视图)的简单故事板,该场景设置为初始控制器并且是AnotherViewController
. 视图中有一个标签没有连接到任何插座。
另一个视图控制器.m
当我运行应用程序并单击该按钮时,它会添加视图控制器和视图 from Another.storyboard
,当我再次单击该按钮时,它们会被删除并AnotherViewController
释放实例。
但是,如果我将标签连接Another.storyboard
到 上的label
插座AnotherViewController
,则不会发生解除分配。为什么会这样,我能做些什么来解决它?
编辑:我确实有一些解决方法,但它们并不是很理想,我更愿意理解为什么推荐的方式(故事板和插座)不能正常工作。
不受欢迎的解决方法 1:做同样的事情,但从 XIB 文件加载视图控制器和视图。这可以按预期工作,但理想情况下,我可以使用故事板做同样的事情。
不受欢迎的解决方法 2:在视图控制器viewDidLoad
方法的代码中手动绑定我的所有插座。这既乏味又丑陋,因为它需要遍历所有视图的子视图并比较标识符。
objective-c - 如何自定义 segue 动画以显示 NSWindowController?
我正在尝试使用情节提要创建首选项窗口,正如WWDC 2014 Session 212 - Storyboards and Controllers on OS X中简要演示的那样。我有一个“首选项...”菜单项,单击时应显示首选项窗口。在 Interface Builder 中,我将首选项菜单项的操作 segue 连接到首选项窗口控制器。当我为情节提要 segue 选择“模态”样式时,单击首选项菜单项时会显示首选项窗口,但它会以动画形式显示。
我希望在没有任何动画的情况下显示首选项窗口,例如打开Xcode > Preferences或Safari > Preferences时会发生什么。
我尝试以两种不同的方式创建自定义NSStoryboardSegue
并覆盖该perform
方法:
调用
showWindow:
destinationController (NSWindowController
) 的方法。这不会显示首选项窗口。
实际上,该窗口在所有其他窗口后面的屏幕上短暂闪烁,然后消失。makeKeyAndOrderFront:
在情节提要的 segue 窗口上调用该方法。窗口开始出现,但很快就消失了。似乎窗口正在被动画显示,但窗口在动画结束时突然隐藏。
如何自定义 segue 以在不设置动画的情况下显示窗口?
macos - 如何在osx帮助菜单中更改系统生成的搜索项的标题
我正在实现自己的语言处理,以便能够在运行时切换我的 OSX 应用程序的语言而无需重新启动。
到目前为止,所有菜单都已更改,我自己使用的标签和我删除的系统生成的标签(特殊字符和听写)。
那么剩下的就是帮助菜单下的搜索菜单了。这个可以改吗。
据我所知,它不是菜单项,也没有出现在项目的快速枚举中。
segue - NSToolbarItem Segue Popover 在 Xcode 7 beta 3 中使用 Storyboards
我正在尝试使用情节提要从 NSToolbarItem 创建一个弹出框。我正在使用 OS X 10.11 beta 3 和 Xcode beta 3。这是我的设置:
在 beta 3 之前,我只是在窗口控制器附近放置了一个视图控制器,然后从工具栏项拖到控制器并选择 segue 方式作为弹出框。然后我运行程序,它会自动运行没问题。
在 beta 3 上,这是我在运行时单击工具栏项后发生的情况:
swift有什么变化吗?我必须在那里手动实现一些东西吗?还是有错误?
附言。我尝试在窗口控制器的内容视图控制器中放置一个按钮(在我的示例中为“嗨”按钮),然后创建了一个从该按钮到另一个带有弹出框的视图控制器的 segue 方式,并且效果很好。