问题标签 [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.

0 投票
2 回答
2444 浏览

macos - 如何在 NSScrollView OS X (10.10) 中嵌入故事板视图控制器以制作复杂的检查器视图?

我正在看 WWDC 2014 视频,“ 212:OS X 上的故事板和控制器”。在这个视频中,他们声称 Pages UI 确实/可以使用 OS X 上的 Storyboards 进行排列(见下文)。

212 的屏幕截图:OS X 上的故事板和控制器,显示 XCode 6 中的故事板布局

但是,在 Pages UI 中,检查器视图很长并且嵌入在滚动视图中(您可以在 Page.app 检查器视图中验证我的两指滚动),一些检查器项目本身也包含在(某种类型的自定义)中披露观点。似乎不可能在滚动视图中嵌入故事板视图控制器,因为没有对应于“滚动视图控制器”类。那正确吗?

故事板视图控制器的视图如何嵌入到故事板上的滚动视图中?

我已经尝试在运行时直接嵌入,但是,这非常hackish并且不能可靠地工作(自动布局的问题)。这条路线可能仍然可行,但我想在走得太远之前获得建议。对于真正的 UI,可能会退回到 XIB。

0 投票
1 回答
380 浏览

cocoa - 如何在显示工作表时启用撤消菜单项

我正在使用情节提要创建基于文档的核心数据 OSX 应用程序。撤消和重做工作正常,直到我在带有 segue 的工作表中呈现视图控制器。提交工作表后,撤消/重做按钮将灰显。

在寻找可能的解决方案时,我遇到了这篇文章,他们说我必须使用“windowWillReturnUndoManager:”委托方法为我的窗口提供一个撤消管理器。所以我在我的segue的sourceController中实现了这个方法,并在prepareForSegue方法中将该控制器设置为destinationController的窗口的委托,如下所示:

但是当我打开工作表时,撤消和重做按钮仍然是灰色的。请注意,将 segue 样式更改为 popover 时,撤消/重做工作正常。我该如何解决这个问题?

0 投票
1 回答
1142 浏览

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

0 投票
1 回答
441 浏览

cocoa - 在情节提要中跨场景为 NSTableView 设置数据源

我在 OS X 10.10 上使用 XCode 6,并且有一个故事板,其中包含一个带有拆分视图控制器的窗口,如下图所示。

我的故事板

拆分视图控制器(在图像中突出显示)是 的一个实例MyViewController,它具有以下代码:

MyViewController.h

我的视图控制器.m

我想在我的故事板中制作视图控制器dataSourceNSTableView但是我无法连接它们。是否有一个原因?

0 投票
0 回答
6381 浏览

macos - 以编程方式呈现视图控制器 OS X

所以也许这很容易而且我很密​​集但是..

我正在尝试从我的 MenuBarController 以编程方式打开一个显示在我的 main.storyboard 上的视图控制器。视图控制器没有附加任何 segues,但我给视图控制器一个故事板 ID 测试。

这是针对 OS X 的,所以很抱歉我是故事板和 Segue 功能的新手。

我一直在尝试这个:

但是收到一个错误:

[NSNib initWithNibNamed:bundle:] 无法加载 nibName: TestApp.MenuBarController in bundle (null)。

0 投票
3 回答
4998 浏览

xcode - 为什么我不能将我的菜单连接到我的视图控制器 IBAction?

我有一个基于文档的应用程序。我刚刚在我的视图控制器中的情节提要和 IBActions 中创建了菜单项。但是,我将动作连接到目标的通常方式不起作用

这是我从菜单项中按 Ctrl 并鼠标从菜单单击到视图控制器时看到的内容。它没有显示我的 IBActions。

任何的想法 ?我的 2 美分猜测是它与基于文档的应用程序有关,但......不太确定

连接菜单

0 投票
1 回答
316 浏览

automatic-ref-counting - 绑定出口时 NSViewController 未解除分配

我有以下文件:

主故事板

这与创建新项目时创建的默认故事板相同,但添加了一些内容:视图中有一个按钮,连接到button视图控制器的出口(的实例ViewController)和doTheThing:视图控制器上的操作。

视图控制器.m

另一个故事板

一个包含单个场景(视图控制器 + 视图)的简单故事板,该场景设置为初始控制器并且是AnotherViewController. 视图中有一个标签没有连接到任何插座

另一个视图控制器.m

当我运行应用程序并单击该按钮时,它会添加视图控制器和视图 from Another.storyboard,当我再次单击该按钮时,它们会被删除并AnotherViewController释放实例。

但是,如果我将标签连接Another.storyboard到 上的label插座AnotherViewController,则不会发生解除分配。为什么会这样,我能做些什么来解决它?

编辑:我确实有一些解决方法,但它们并不是很理想,我更愿意理解为什么推荐的方式(故事板和插座)不能正常工作。

不受欢迎的解决方法 1:做同样的事情,但从 XIB 文件加载视图控制器和视图。这可以按预期工作,但理想情况下,我可以使用故事板做同样的事情。

不受欢迎的解决方法 2:在视图控制器viewDidLoad方法的代码中手动绑定我的所有插座。这既乏味又丑陋,因为它需要遍历所有视图的子视图并比较标识符。

0 投票
0 回答
370 浏览

objective-c - 如何自定义 segue 动画以显示 NSWindowController?

我正在尝试使用情节提要创建首选项窗口,正如WWDC 2014 Session 212 - Storyboards and Controllers on OS X中简要演示的那样。我有一个“首选项...”菜单项,单击时应显示首选项窗口。在 Interface Builder 中,我将首选项菜单项的操作 segue 连接到首选项窗口控制器。当我为情节提要 segue 选择“模态”样式时,单击首选项菜单项时会显示首选项窗口,但它会以动画形式显示。

我希望在没有任何动画的情况下显示首选项窗口,例如打开Xcode > PreferencesSafari > Preferences时会发生什么。

我尝试以两种不同的方式创建自定义NSStoryboardSegue并覆盖该perform方法:

  1. 调用showWindow:destinationController ( NSWindowController) 的方法。

    这不会显示首选项窗口。
    实际上,该窗口在所有其他窗口后面的屏幕上短暂闪烁,然后消失。

  2. makeKeyAndOrderFront:在情节提要的 segue 窗口上调用该方法。

    窗口开始出现,但很快就消失了。似乎窗口正在被动画显示,但窗口在动画结束时突然隐藏。

如何自定义 segue 以在不设置动画的情况下显示窗口?

0 投票
0 回答
35 浏览

macos - 如何在osx帮助菜单中更改系统生成的搜索项的标题

我正在实现自己的语言处理,以便能够在运行时切换我的 OSX 应用程序的语言而无需重新启动。

到目前为止,所有菜单都已更改,我自己使用的标签和我删除的系统生成的标签(特殊字符和听写)。

那么剩下的就是帮助菜单下的搜索菜单了。这个可以改吗。

据我所知,它不是菜单项,也没有出现在项目的快速枚举中。

在此处输入图像描述

0 投票
0 回答
188 浏览

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 方式,并且效果很好。