Macos 在OS X 10.10中,我可以在没有NSCell的情况下实现NSControl吗?
我正在学习Macos 在OS X 10.10中,我可以在没有NSCell的情况下实现NSControl吗?,macos,cocoa,osx-yosemite,nscell,nscontrol,Macos,Cocoa,Osx Yosemite,Nscell,Nscontrol,我正在学习NSControl。我知道,NSCell已经开始在OS X 10.10 Yosemite中遭到弃用,因此我不希望使用即将消失的API。另外,NSControl类引用显示所有单元格访问器都已弃用 我了解所有这些,但不太清楚的是,对于在10.10上编写NSControl子类的人,推荐的课程是什么。关于这个主题的所有苹果指南都没有提到对NSCell的反对。我想我可以用老方法做事,但当苹果将NSCell的弃用升级到下一个级别时,我需要修改我的代码 甚至可以在根本不使用NSCell的情况下实现N
NSControl
。我知道,NSCell
已经开始在OS X 10.10 Yosemite中遭到弃用,因此我不希望使用即将消失的API。另外,NSControl
类引用显示所有单元格访问器都已弃用
我了解所有这些,但不太清楚的是,对于在10.10上编写NSControl
子类的人,推荐的课程是什么。关于这个主题的所有苹果指南都没有提到对NSCell
的反对。我想我可以用老方法做事,但当苹果将NSCell
的弃用升级到下一个级别时,我需要修改我的代码
甚至可以在根本不使用NSCell
的情况下实现NSControl
子类吗
有人能提供建议或将我链接到关于这个主题的资源吗?事实证明,谷歌很难做到这一点。我也在努力解决这个问题。不幸的是,我不能回答你所有的问题,但这是我到目前为止的发现 他们对正在发生的事情有一个简短的解释,这是我最初在问题中看到的 NSCell的逐渐退化 MacOSX10.10朝着最终不赞成的方向又迈出了一步 细胞。不鼓励直接访问控件的单元格,并且 允许它的方法将在以后的版本中正式弃用 释放。各种单元级API已推广到各种应用程序 控制子类以提供对重要数据的无单元访问 功能。NSLevelIndicator、NSTextField、NSSearchField、NSSlider、, 和NSPathControl都具有用于此目的的新属性。基于细胞的 NSTableViews现在已被弃用,基于视图的NSTableViews应该被弃用 用它来代替。基于矩阵的NSB浏览器也被弃用,取而代之的是 基于项的界面 10.10文件中有许多NSControl方法用红色划掉。(顺便说一句,我不确定这是否明确表示“不赞成”。) 但是,
连续
和启用
的文档标记会产生误导。我查看了NSControl
的头文件,查看了文档中被划掉的声明,似乎有一些不同的情况:
NS\u弃用\u MAC
:
// Use formatters instead. See -[NSControl formatter] and -[NSControl setFormatter:].
- (void)setFloatingPointFormat:(BOOL)autoRange left:(NSUInteger)leftDigits right:(NSUInteger)rightDigits NS_DEPRECATED_MAC(10_0, 10_0);
NSDeprecated
类别中:
@interface NSControl (NSDeprecated)
// Use formatters instead. See -[NSControl formatter] and -[NSControl setFormatter:].
- (void)setFloatingPointFormat:(BOOL)autoRange left:(NSUInteger)leftDigits right:(NSUInteger)rightDigits NS_DEPRECATED_MAC(10_0, 10_0);
+ (void)setCellClass:(Class)factoryId;
+ (Class)cellClass;
- (id)cell;
- (void)setCell:(NSCell *)aCell;
- (id)selectedCell;
- (NSInteger)selectedTag;
- (void)setNeedsDisplay; // Use setNeedsDisplay:YES instead.
- (void)calcSize;
- (void)updateCell:(NSCell *)aCell;
- (void)updateCellInside:(NSCell *)aCell;
- (void)drawCellInside:(NSCell *)aCell;
- (void)drawCell:(NSCell *)aCell;
- (void)selectCell:(NSCell *)aCell;
@end
-userInterfaceLayoutDirection
-setUserInterfaceLayoutDirection
@property (getter=isContinuous) BOOL continuous;
@property (getter=isEnabled) BOOL enabled;
NSControl
子类而不创建NSCell
子类的好信息,尽管显然NSColorWell
是一个无单元格的NSControl
我目前的粗略结论是,NSControl
与NSCell
的耦合相当强,不使用其中一个是不明智的。因此,我正在考虑编写一个NSView
子类
我也希望能在这里得到更多的信息和建议