- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个带有单列的基于 View NSTableView
。此列使用 Interface Builder 中的标准 NSTableCellView
进行填充(我选择了带有图像和文本字段的版本)。
现在我想让列中的文本字段可编辑。
我的第一次尝试是从界面构建器修改 NSTextField
并将其行为设置为可编辑
。它确实有效,当我选择一行并按下回车键
时,该字段变为可编辑状态,并且我可以更改其值。我认为我能够拦截此更改,这要归功于一些 NSTableViewDataSource
方法,例如 tableView:setObjectValue:forTableColumn:row:
但永远不会调用此方法来响应文本字段编辑行动。
在基于 View 的 NSTableView 系统中处理可编辑字段的正确方法是什么?我认为 NSTableViewDataSource
与它有关,但我不知道如何调用它的方法。
最佳答案
创建 NSTableCellView 的子类。 (适当的 .h 和 .m 文件)使类响应 NSTextFieldDelegate 协议(protocol)。实现control:textShouldEndEditing:方法。使该子类成为标签控件的委托(delegate)。
这是一些示例代码。
CategoryListCell.h
@interface CategoryListCell : NSTableCellView
@end
CategoryListCell.m
@interface CategoryListCell()<NSTextFieldDelegate>
@property (weak) IBOutlet NSTextField *categoryLabel;
@property (assign) BOOL editing;
@property (copy) NSString* category;
@end
@implementation CategoryListCell
- (BOOL)control:(NSControl*)control textShouldBeginEditing:(NSText *)fieldEditor {
self.editing = YES;
return YES;
}
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor; {
if (self.editing) {
self.editing = NO;
[self mergeFromSource:self.category toDestination:self.categoryLabel.stringValue];
}
return YES;
}
- (void)mergeFromSource:(NSString*)source toDestination:(NSString*) destination {
// your work here
}
@end
关于macos - 使 NSTableCellView 可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13745025/
我有一个相当基本的MainWindow.xib带有源列表样式的侧边栏。我通过将 Source List 模板拖到窗口中来创建它,该窗口已经包含两个 NSTableCellView s: HeaderC
我正在使用菜单项将列文本字段设置为可编辑。这就是我尝试过的,但根本没有响应(没有文本变为可编辑)。 (我已经登录,并且调用了该方法,并且文本字段不为空。) - (IBAction)setEditabl
是否可以编译包含 NSTableCellView 引用的 Snow Leopard 应用程序,即使包含 NSTableCellView 引用的窗口从未显示? (如果检测到雪豹,IE 会显示不同的 Vi
在我的自定义 NSTableCellView 中,我以这种方式重写 -(void)drawRect (我这样做是因为我有 NSWindow 的图案图像背景。我只需要在 cellView 中显示 NSL
我正在尝试获取一个自动布局约束,以便在 NSTableCellView 中使用动画进行更新。约束可以正常更新,但动画不会发生这种情况。 下面的代码在tableView(_ tableView: NST
我有一个基于 View 的 NSTableView .我定位了 textField和 NSTableCellView 中的其他元素在带有自动布局的 Interface Builder 中。如何根据自动
如何从 NSTableView 中手动删除 NSTableCellView(或其子类)? 当我清空保存信息的数组,将新信息排队到数据库,然后重新加载表数据时,它只会更新具有与新数组列表中找到的索引值类
我用的是简单的 NSTableViewDelegate ,在 GetViewForItem 方法中我找到了 Identifier NSTableCellView view = (NSTableCell
我在 IB 中向 NSTableCellView 添加了一个额外的新标签。 如何连接这个新字段,以便我可以像 tableView.make 中的内置字段“textfield”一样访问它( withId
我创建了 NStextField 的子类,它可以扩展和收缩以适应文本中的更改。这是代码: - (NSSize)sizeToFitContent { NSRect frame = [self f
当您突出显示一行时,左键或右键单击突出显示的单元格,它将进入编辑模式(即使在 X 秒没有事件后,因此这不是双击操作)。 我想禁用此功能并使其仅在双击时才起作用,即使您已经选择了该单元格。 如果这是不可
我正在尝试创建一个自定义 NSTableCellView。我对 NSTableCellView 进行了子类化,并且需要自定义背景颜色和突出显示/选择颜色。有办法做到这一点吗? 最佳答案 背景和选择由
我将图像和文本表单元格 View 添加到 IB 中的 NSTable。 Text Table Cell View中有一个TextFiled和一个ImageView,所以我的代码如下所示: - (NSV
我创建了一个带有单列的基于 View NSTableView。此列使用 Interface Builder 中的标准 NSTableCellView 进行填充(我选择了带有图像和文本字段的版本)。 现
我已经子类化了 NSTableCellView 来进行一些自定义绘图。当包含的 NSOutlineView 的突出显示样式设置为 None 时,我的 View 会收到 mouseDown 事件。 当我
我有一个基于 View 的 NSTableView 和一个自定义 NSTableCellView。这个自定义的 NSTableCellView 有几个标签(NSTextField)。 NSTableC
我想以编程方式将焦点设置在连续一列的表格中 NSTableCellView 中的两个编辑字段之一上,以便用户可以立即编辑该字段。在我的示例中,我可以选择该行(按下按钮后),但我找不到将焦点设置在特殊字
我尝试使用 NSGridView 来布局 NSTableCellView 像这样 class GridItemCV: NSTableCellView { var grid : NSGridView?
我确实正在尝试解决这个特定问题。已经很久了。 我有一个 Mac 应用程序,它完全位于状态栏中。每当我通过单击状态栏图标打开应用程序时,弹出窗口都会打开 contentViewController。 c
我尝试将 NSPopUpButton 垂直放置在表格单元格的顶部 - 但没有成功。它保持垂直居中: 返回 NSPopUpButtons 的代码: extension ViewController:NS
我是一名优秀的程序员,十分优秀!