问题标签 [nscell]

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 投票
10 回答
14711 浏览

objective-c - 是否可以在 Interface Builder 中设计 NSCell 子类?

我正在尝试将 NSCell 子类化以在 NSTableView 中使用。我要创建的单元格相当复杂,所以如果我可以在 Interface Builder 中设计它然后从 nib 加载 NSCell 将会非常有用。

这可能吗?我该怎么做?

0 投票
2 回答
1767 浏览

objective-c - 自定义 NSCell 中的可点击链接

我有一个自定义的 NSCell,其中包含各种元素(图像、各种文本片段),其中一个文本块内部可能有各种可点击的链接。我有我的 NSAttributedString 正确识别链接并将它们着色为蓝色但是我无法弄清楚如何让光标变成一只手并允许用户实际点击它们。

现在我将我的属性字符串直接绘制到显然不可点击的单元格,但我不确定如何以任何其他方式添加它,因为 NSCell 不是从 NSView 继承的。通常我只会添加一个 NSTextField 作为子视图,但在这种情况下我不能这样做。

有什么想法吗?

0 投票
1 回答
272 浏览

memory-management - 核心数据和自定义 NSCell

我正在使用两个实体Log(属性textdate)的核心数据构建一个玩具应用程序,并具有从toTag的多对多tags关系。LogTag

我想在表格中显示日志,所以我:

  • 在 IB 中创建了一个NSArrayController实例,LogController实体设置为Log( pic )
  • 创建了一列NSTableView,其列绑定到LogController. 图片
  • LogController我的应用程序委托 ( AppDelegate) 中使用IBOutlet. AppDelegate也有managedObjectContext
  • 创建了一个具有属性的自定义NSCell类,并且我将其绘制到单元格上NSStringmainTexttagsText
  • AppDelegate我在方法中设置了上述两个单元格属性- (void)tableView: willDisplayCell: forTableColumn: row:。(MainController也是表的代表)。对于tagsText我获取当前日志的标签并将它们连接成一个NSString

一切正常,除了:当我用鼠标选择显示多个标签的行时,应用程序崩溃并带有EXC_BAD_ACCESS. 那是我唯一一次有任何错误,但我不知道是什么原因造成的。

0 投票
1 回答
2540 浏览

cocoa - 如何在 NSTableView 中设置 NSButtoncell 类型的单元格的背景颜色?

这是我的表视图委托:

它可以很好地显示普通单元格,但是在我添加一个具有 NSButtonCell 类型的单元格(用于复选框)后,tableview 会冻结。如何解决?

任何帮助,将不胜感激。

0 投票
2 回答
517 浏览

cocoa - NSCell 是如何显示的?

NSControl 的单元格不在视图层次结构中。我对么?

如果不是,如果它不在视图层次结构中,它是如何在视图上绘制的?

我问是因为我想要一个 View/Control 子类,我可以将它拖到 contentview 上,然后将按钮添加到该视图中,并让最低组件成为单元格。所以单元格可以获取所有的点击事件,做一些事情,然后将它们传递到按钮上。

窗口 -> 内容视图 -> 自定义视图 ->(按钮,按钮,按钮)


NSResponder,谢谢这就是我的想法。

Costique,我总是先检查苹果的文档。我只是想澄清一下。

0 投票
2 回答
7486 浏览

cocoa - 自定义 NSCell 内的 NSButtonCell

在我的可可应用程序中,我需要一个用于 NSTableView 的自定义 NSCell。这个NSCell 子类包含一个用于处理单击的自定义 NSButtonCell(以及两个或三个用于文本内容的 NSTextFieldCell)。您将在下面找到我的代码的简化示例。

我遇到的问题是:让这个 NSCell 中的 Button(更准确地说:NSButtonCell)正常工作的最佳/正确方法是什么?“工作”是指:触发指定的操作消息并在单击时显示备用图像。开箱即用,单击时按钮不执行任何操作。

很难找到有关此主题的信息/阅读材料。我在网上找到的唯一帖子指向我实施

这是正确的方法吗???实现 trackMouse: 在我包含的 NSCell 中?然后将事件转发到 NSButtonCell?我本来希望 NSButtonCell 本身知道当它被点击时要做什么(我看到 trackMouse: 方法更多地与真正跟踪鼠标移动相结合——而不是作为“标准”点击行为的训练轮)。但是,当包含在单元格本身中时,它似乎并没有这样做……看来我还没有掌握自定义单元格的大局;-)

如果有人能根据他自己的经验回答这个问题(或向我指出一些教程等),我会很高兴 - 并告诉我我是否走在正确的轨道上

在此先感谢,托比

0 投票
3 回答
1757 浏览

objective-c - 在 NSTableView 的自定义 NSCell 中使用绑定公开模型对象

我正在努力尝试执行我认为相对常见的任务。我有一个NSTableView通过NSArrayController. 数组控制器将其内容设置为NSMutableArray包含一个或多个NSObject模型类实例的 。我不知道该怎么做NSCell是以绑定友好的方式在子类中公开模型。

为了说明的目的,我们将说对象模型是一个由名字、姓氏、年龄和性别组成的人。因此,模型将如下所示:

显然,适合该类的 setter、getter init 等。

在我的控制器类中,我定义了一个NSTableViewNSMutableArray和一个NSArrayController

使用 Interface Builder,我可以轻松地将模型绑定到适当的列:

myPersonArray --> myPersonArrayController --> table column binding

这工作正常。所以我删除了额外的列,留下一个隐藏的绑定到的列NSArrayController(这会创建并保持每一行和 之间的关联NSArrayController),这样我就可以在我的NSTableView和一个隐藏的列中找到一个可见的列。我创建一个NSCell子类并放置适当的绘图方法来创建单元格。在我的awakeFromNib我建立自定义NSCell子类:

从绘图的角度来看,这也可以正常工作。我让我的自定义单元格显示在列中,并且它对我的数组控制器中的每个托管对象重复。如果我从数组控制器中添加对象或删除对象,则表会相应更新。

但是......我的印象是我的PersonModel对象可以从我的NSCell子类中获得。但我不知道怎么去。我不想NSCell使用 setter 和 getter 来设置每个,因为那样我通过将数据存储在NSCell而不是从数组控制器中引用它来打破整个模型概念。

是的,我确实需要自定义NSCell,因此不能选择多列。从这里到哪里?

除了 Google 和 StackOverflow 搜索之外,我还对 Apple 的文档进行了强制浏览,但似乎没有找到答案。我发现了很多绕圈子但没有涉及到NSArrayController. 当绑定到模型实体的其他元素(例如主/细节场景)时,控制器使生活变得非常容易。我在使用 Core Data 时也发现了很多参考资料(虽然没有答案),但我没有使用 Core Data。

按照惯例,我非常感谢可以提供的任何帮助!

0 投票
1 回答
1753 浏览

cocoa - NSImage下绘制阴影

目前我正在自定义 NSCell 中绘制一个 NSImage ,如下所示:

很简单,我想知道如何在它下面绘制图像。在 iPhone 上,我会使用CGContextSetShadow (currentContext, CGSizeMake(1, -1), 2):就在绘制 UIImage 之前,但我不熟悉如何在 Mac 上进行绘制。

任何指针都会很棒。

0 投票
1 回答
960 浏览

objective-c - NSTextFieldCell 或仅带有垂直文本(和彩色着色)的 NSCell

我正在努力寻找一种优雅的方式来以垂直方式显示表格视图的列标题(从传统方式逆时针旋转 90 度)。我不喜欢把它作为一个实际的 NSTableHeaderCell 来做,我认为通过覆盖 NSTextFieldCell 或 NSCell 可能更容易做到这一点。

单元格仅包含不可编辑的文本,但通常是两行,并且有时会根据上下文与列的其余部分着色。

我似乎找不到任何这样做的可可应用程序,更不用说开源示例了。有什么想法吗?

0 投票
1 回答
1134 浏览

cocoa - 让 NSFormatter 不断验证 NSTextFieldCell

在 Cocoa 中,我有一个 NSOutlineView,其中的单元格是 NSTextFieldCell。单元格显示的值是根据特定规则格式化的字符串(例如浮点数或浮点数对,中间有空格)。我制作了一个自定义 NSFormatter 来验证文本,这似乎没有问题。

但是,单元格(或大纲视图,我不确定是什么原因造成的)似乎仅在我的编辑结束时才使用格式化程序。如果我在文本字段中输入一些字母字符(这违反了格式化规则),这些字符就会出现——我注意到格式化程序正在发挥作用的唯一方法是,我现在无法将键盘焦点从该单元格移开。如果我将单元格的内容返回为有效形式,那么我可以将焦点移开。

我已将单元格视图和大纲视图都设置为“连续”。

如果我一开始就无法在单元格中输入文本会更好。是否有可能做到这一点,如果可以,怎么做?