标签: cocoa-bindings

NSTableCellView中的NSButton:如何找到所需的objectValue?

我有一个基于视图的NSTableView,它通过绑定填充.我的textFields和imageViews绑定到NSTableCellView的objectValue属性.

如果我想在我的NSTableCellView中有一个编辑/信息按钮:

  1. 谁应该成为按钮动作的目标?

  2. 目标如何获得与按钮所在的单元格关联的objectValue?

我最终想要显示一个基于objectValue的popover/sheet.

cocoa nstableview cocoa-bindings nsbutton nstableviewcell

4
推荐指数
2
解决办法
4053
查看次数

使用NSArrayController管理有序核心数据关系

所有那些"NSOrderedSet后来被添加,因此不必与其他组件一起玩"错误让我发疯...

(https://twitter.com/kubanekl/status/413447039855640576)

我有两个托管对象和它们之间有序的1:N关系,它由一个实例(或更精确的子类)支持NSOrderedSet.我想使用a来管理这种关系NSArrayController,以便从它提供的功能中获益(选择管理,内容绑定,视图绑定等NSTableView).

由于NSOrderedSet不是子类NSSet,contentSet绑定NSArrayController不适用于该关系.我发现了以下主题并试图实现那里提到的建议.

第一个建议是使用contentArray绑定和值转换器将有序集转换为数组.这个解决方案的问题是每次进行更改时重新分配内容,这不是我想要的.

在提到的线程中提供的第二个建议是使用contentArray绑定并将@array操作符应用于模型密钥路径.我已经尝试过,但是当通过添加/删除对象时根本没有触及底层关系NSArrayController.

我发现的另一个选项是使用带contentSet绑定的排序描述符.这将需要使关系无序,以便使contentSet绑定工作并引入特别用于管理订单的新属性.这还需要一个自定义排序机制来实现,它会搞砸模型.老实说,我想避免这个解决方案.

我的问题很清楚:有没有办法管理有序的核心数据关系NSArrayController?如果是这样,哪种方法尽可能少引起疼痛?

cocoa core-data nsarraycontroller cocoa-bindings nsorderedset

4
推荐指数
1
解决办法
1657
查看次数

10.11 NSCollectionView:"无法在bundle NSBundle中加载nibName:NSCollectionViewItem"

我想根据https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKit/#10_11CollectionView使用来自Swift的新API模型的NSCollectionView .由于我更喜欢​​在IB中尽可能多地做,我想使用内容绑定,并在链接页面上按照绑定内容部分到NSCollectionView(自WWDC种子以来新增).

我已经从对象库中将NSCollectionView拖入我的故事板,然后通过连接检查器删除了另外生成的原型 segue,并删除了生成的NSCollectionViewItem.然后,我将Collection View的布局设置为Flow,并将集合视图连接到视图控制器的插座.

接下来,我使用Xcode的视图模板创建了一个单独的.xib文件,并放入必要的视图.我还引入了"Collection View Item"对象.

然后,我调整了视图控制器的viewDidLoad方法,用集合视图注册nib.

override func viewDidLoad() {
    super.viewDidLoad()

    let nib = NSNib(nibNamed: "Item", bundle: nil)!
    collectionView.registerNib(nib, forItemWithIdentifier: "")
}
Run Code Online (Sandbox Code Playgroud)

最后,我将我的数组控制器连接到NSCollectionView的Content绑定.

但是,当我尝试启动应用程序时,会抛出异常:

[NSNib _initWithNibNamed:bundle:options:]无法在bundle NSBundle中加载nibName:NSCollectionViewItem

仅当我的数组具有实际内容时才会发生异常,因此仅当需要实例化CollectionViewItem时.

我在这做错了什么?

示例项目:https://scriptreactor.com/collectionviewtest.zip

macos nib cocoa-bindings nscollectionview xcode7

4
推荐指数
1
解决办法
4824
查看次数

如何正确使用NSCollectionView和Outlets?

我正在拼命尝试连接NSViews的控件,这些控件将驻留在使用outlet的NSCollectionView中.使用NSArrayController提供集合视图.

我在一个单独的NIB文件中创建了NSView,在NSCollectionViewItem的实现中,我覆盖了copyWithZone来加载它:

    -(id)copyWithZone:(NSZone *)zone
{
    id result = [super copyWithZone:zone];

    [NSBundle loadNibNamed:@"InputView" owner:result];

    return result;
}
Run Code Online (Sandbox Code Playgroud)

我根据这个说明使用了这种方法.

不幸的是,这是发生的事情:

替代文字

NSView看起来像这样:

替代文字

NSCollectionView驻留在NSScrollView中,滚动条设置为自动启用.但正如你所看到的那样,没有滚动条.

我真的不明白我需要做什么,所以NSCollectionView知道它的NSViews的尺寸.

它之前我没有单独的NIB文件,但后来我无法从视图到项目的出口连接:-(

cocoa objective-c interface-builder cocoa-bindings nscollectionview

3
推荐指数
1
解决办法
2560
查看次数

刷新Cocoa-Binding - NSArrayController - ComboBox

在我的应用中,我做了一个非常简单的绑定.我有一个绑定到NSArrayController的NSMutableArray.控制器本身绑定到ComboBox,它显示NSMutableArray的所有内容.工作良好.

问题是:数组的内容会发生变化.如果用户对应用程序进行了一些调整,我会删除NSMuteableArray中的所有项目,并用新的和不同的项目填充它.

但是NSMutableArray < - > NSArrayController < - > NSComboBox的绑定不会刷新.

无论我是否从Array中删除所有对象,ComboBox仍然显示相同的项目.

这有什么不对?我的方法是错误的还是我只需要告诉绑定刷新自己?我没有发现如何做到这一点.

cocoa nsarraycontroller cocoa-bindings

3
推荐指数
1
解决办法
4686
查看次数

如何在使用Cocoa绑定时取消保存首选项?

我刚刚开始搞乱绑定.我已经开始实现一个首选项对话框,将一些NSColorWell绑定到共享默认控制器.那是完美的.我的值被编码并正确保存.

但是,什么不起作用是取消对话框.如果我取消,则仍会保存这些值.

似乎我应该将取消按钮绑定到NSUserDefaultController的"恢复",但当然如果我这样做,我不能将它绑定到"performClose"(除非有一种方法将按钮绑定到多个动作,我我不知道.

我应该如何绑定取消按钮以恢复更改并关闭窗口.显然,我可以通过编写一个同时执行这两种操作的方法来实现,但似乎应该可以在IB中实现.

macos cocoa cocoa-bindings

3
推荐指数
1
解决办法
384
查看次数

NSSearchField无法按预期工作

我试图在他的"核心数据"一书中关注Marcus Zarra.在书中,他制作了一个小样本应用程序,但是当事情无法解决时它没有给予太多帮助......

他首先通过可视化设计三个实体,然后将每个实体的阵列控制器添加到主笔尖.其次,他添加了一个tableview和一些其他可视组件来显示来自阵列控制器的数据.

到目前为止,我已经设法遵循,但现在他为gui添加了一个搜索字段,并将其绑定到与其中一个tableviews相同的数组控制器.在搜索字段中键入时,预期的行为将是tableview被过滤,但没有任何反应.

我如何找出问题所在?

笔尖的相关部分如下:

NSArrayController Recipes
- Mode = Entity
- Enitity Name = Recipe

TableView w/TableColumn
- 值绑定到配方
- Controller Key = arrangeObjects - Model Key Path = name

搜索字段
- 谓词绑定到配方
- 控制器键= filterPredicate
- 模型键路径=名称
- 显示名称=谓词
- 谓词格式= keyPath包含$ value

控制台中没有相关消息.

问候,
-Vegar

cocoa core-data cocoa-bindings nssearchfield

3
推荐指数
1
解决办法
1392
查看次数

绑定到Cocoa中的类方法?

如果我有一个像这样的方法:

@interface CharacterSet
    + (NSArray *)allCharacterSets;
@end
Run Code Online (Sandbox Code Playgroud)

我可以使用Cocoa绑定绑定它吗?

我正在尝试将NSComboBox的内容值连接到它.当我进入CharacterSet.allCharacterSetsIB中的"模型密钥路径"字段时,它不起作用,说:

[addObserver:forKeyPath:@"CharacterSet.allCharacterSets"选项:0x0上下文:0x200275b80]被发送到与"CharacterSet"属性不符合KVC的对象.

我不知道还有什么可以尝试的.目前我必须allCharacterSets在我的自定义窗口控制器(或自定义窗口)中将返回值存储到ivar中以使其工作,这似乎是我不应该采取的额外步骤.

static-methods key-value-coding cocoa-bindings

3
推荐指数
1
解决办法
549
查看次数

如何将NSObjectController与Core Data一起使用?

我花了一天多的时间试图找到一个如何使用NSObjectControllerfor binding和核心数据的简单示例.所有示例都NSArrayControllers带有NSTableView绑定.

您如何设置一个简单NSObjectController的核心数据来自动保存和获取数据?假设您想要将具有字符串属性的实体绑定到文本字段,您将如何执行此操作?

macos cocoa core-data cocoa-bindings nsobjectcontroller

3
推荐指数
1
解决办法
1191
查看次数

如何在使用绑定时使子NSManagedObjectContext保持最新

NSManagedObjectContext有一套NSPrivateQueueConcurrencyType我在应用程序中大部分时间都在使用的设置.

除此之外,我创建了一个NSMainQueueConcurrencyType与可可绑定一起使用的子MOC (我听说绑定不适用于私有队列MOC).我已经绑定了一些ObjectControllers和一个ArrayController这个子环境.我非常希望将子进程保留在主队列中,而不是交换MOC队列类型.

当我通过UI更改绑定对象时,更改不会传播到父上下文.当我对父上下文进行更改时,它们不会过滤到Object/ArrayControllers.

我怎样才能做到这一点?是否有一个设置可以告诉Object/ArrayControllers适当地刷新它们的上下文并在它们进行更改时保存它?

cocoa core-data objective-c cocoa-bindings nsmanagedobjectcontext

3
推荐指数
1
解决办法
1058
查看次数