gpt4 book ai didi

cocoa - 基于 View 的NSTableView编辑

转载 作者:行者123 更新时间:2023-12-03 16:02:07 24 4
gpt4 key购买 nike

我不确定自己在做什么错。由于我找不到关于此的任何其他问题(甚至文档),因此对于其他人来说似乎确实可以正常工作。

我只是想获得一个基于 View 的NSTableView来支持对其内容的编辑。即该应用程序显示一个包含一列和几行的NSTableView,其中包含带有某些内容的NSTextField。我希望能够(双击)一个单元格并编辑该单元格的内容。因此,基本上,是基于ozt_code方法实现的基于单元格的NSTableView的正常行为。

我分析了Apple的TableViewPlayground示例代码中的Complex TableView示例(该示例代码支持单元格内容的编辑),但是我找不到启用编辑的设置/代码/开关。

这是一个简单的示例项目(Xcode 6.1.1,SDK 10.10,基于 Storyboard ):

header :

#import <Cocoa/Cocoa.h>

@interface ViewController : NSViewController

@property (weak) IBOutlet NSTableView *tableView;

@end

实现方式:
#import "ViewController.h"

@implementation ViewController
{
NSMutableArray* _content;
}

- (void)viewDidLoad {
[super viewDidLoad];
_content = [NSMutableArray array];

for(NSInteger i = 0; i<10; i++) {
[_content addObject:[NSString stringWithFormat:@"Item %ld", i]];
}
}

#pragma mark - NSTableViewDataSource
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
return _content.count;
}

#pragma mark - NSTableViewDelegate
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
NSTableCellView* cell = [tableView makeViewWithIdentifier:@"CellView" owner:self];
cell.textField.stringValue = _content[row];
return cell;
}

- (IBAction)endEditingText:(id)sender {
NSInteger row = [_tableView rowForView:sender];
if (row != -1) {
_content[row] = [sender stringValue];
}
}
@end

Storyboard文件如下所示:

表 View 的数据源和委托(delegate)设置为 View Controller 。
运行此应用程序时,表 View 显示10个测试行,但无法编辑其中的一行。

这是为什么?我在这里想念什么?

我仔细检查了NSTableView的所有属性(及其内容)是否与Apple的TableViewPlayground示例相同。在经过数小时的搜索文档和互联网以获取有用的提示而没有成功之后,我感到非常沮丧。在基于 View 的NSTableView上可以找到的所有内容都是不可编辑的示例,或者关于可编辑内容的信息非常模糊。当然,有关基于单元格的可编辑NSTableViews,还有大量信息,文档和示例...

我的示例项目的zip文件可在此处下载:
TableTest.zip

最佳答案

默认情况下,每个单元格(NSTableCellView的实例)上都有一个NSTextField。当您编辑单元格时,实际上您正在编辑的是此文本字段。 Interface Builder使此文本字段不可编辑:

您需要做的就是将“行为” pop 窗口设置为Editable。现在,您可以使用回车或单个 -click编辑文本字段。

关于cocoa - 基于 View 的NSTableView编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28281045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com