标签: nstableview

双击Cocoa中的NSTableView行?

当用户双击一行中的一行时,我需要我的应用程序打开一个窗口NSTableView.我在寻找有关如何实现这一目标的信息或示例时遇到了一些困难.任何人都能指出我正确的方向吗?

cocoa double-click nstableview

70
推荐指数
6
解决办法
3万
查看次数

隐藏NSTableView标头?

如何完全隐藏NSTableView标头,以便它不占用任何空间?

cocoa objective-c nstableview

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

在基于视图的NSTableView上更改选择颜色

OS X应用程序中的标准突出显示颜色为蓝色.

是否可以将其更改为其他颜色,例如灰色?

请注意,我NSTableView从OS X 10.7开始使用新的基于视图的可用.

cocoa objective-c nstableview osx-lion

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

我怎样才能让NSTableView的唯一列占据TableView的所有宽度?

我目前正在尝试学习一些Cocoa(使用Cocoa Programming for Mac OS X).在其中一个练习中,我们设置了一个只有一列的NSTableView,作为一个列表.

令我恼火的是,在Interface Builder中,我找不到让(唯一)列始终占用NSTableView的全宽度的方法.因此,当实际上只有一列时,总会看起来有两列.

任何的想法 ?

cocoa interface-builder nstableview xcode4

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

NSTableView仅显示"表视图单元格"

我有一个NSTableView,委托和数据源指向我的控制器.我试过实施

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
Run Code Online (Sandbox Code Playgroud)

方法,但无论我返回什么,表总是在数据中显示"表视图单元格".我可能做错什么的想法?附上两张照片,显示我已正确设置了委托(它还显示了正确的行数).

表格显示了什么 在此输入图像描述

请注意,我也尝试过返回@"Hello World"所有内容,但我得到了相同的结果.

cocoa objective-c nstableview

31
推荐指数
4
解决办法
9952
查看次数

以编程方式创建NSTableView(让NSHeaderView显示出来的麻烦)(cocoa osx)

我正在以编程方式制作NSTableView,但由于某些原因,无论我做什么,我都无法让darn headerView显示出来.我必须以编程方式执行此操作而不使用IB,因为我实际上是在名为clozure cl的IDE中开发此小部件,这是一个包含可可桥的lisp ide.最初我认为这个问题可能是由我的开发环境引起的,但我只是在Xcode中使用目标C创建了一个例子,似乎问题仍然存在.我所做的非常简单:

我在IB中创建了一个窗口,在我的awkefromnib方法中,我创建并设置了一个表视图,这里是代码:

- (void)awakeFromNib {
mydatasource *data = [[mydatasource alloc] init];
NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"id"];
NSTableView *table = [[NSTableView alloc] initWithFrame: [[self                      

   contentView]frame]];
[table setDataSource:data];
[table addTableColumn:column];
[table addTableColumn:column];
[[self contentView] addSubview:table];
}
Run Code Online (Sandbox Code Playgroud)

这是我的数据源对象的代码:

- (int)numberOfRowsInTableView:(NSTableView *)aTableView
{
printf("NUM ROwS");
    return 4;
}
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn    *)aTableColumn row:(NSInteger)rowIndex
{
 printf("THE OTHER ONE"); 
 return @"OKAY";
}
Run Code Online (Sandbox Code Playgroud)

使用这段代码,我得到一个包含两个列和四行的窗口,每个单元格显示字符串"OKAY",除了表没有标题外,这一切都很好.这可能是有意义的,除非我查看表头方法,它有一个初始化的头,其框架的值是有意义的.我只是想知道为什么我没有看到它.我需要做一些特殊的魔术才能显示标题吗?我似乎无法在文档中找到任何线索.再一次,必须以编程方式完成这个lisp ide,所以没有建议使用我知道将有一个工作headerView的IB没有帮助.非常感谢.

macos cocoa objective-c nstableview

30
推荐指数
3
解决办法
2万
查看次数

以编程方式在NSTableView中选择一行

我想以编程方式在我的表视图中选择一行,我相信我会使用selectRowIndexes:byExtendingSelection:(这是一个委托方法吗?).另一件事是我如何使用该方法选择第二行(在编程术语第1行)?

cocoa objective-c nstableview

28
推荐指数
1
解决办法
2万
查看次数

在基于视图的表视图中响应文本字段中的鼠标事件

我在自定义视图中有文本字段NSOutlineView.编辑其中一个单元格需要单击,暂停和另一次单击.第一次单击选择表视图行,第二次单击单击在字段中绘制光标.双击单元格(允许您在基于单元格的表格视图中进行编辑)仅选择该行.

我想要的行为:单击一下即可更改选择并进行编辑.

我需要覆盖什么才能获得此行为?

我读过其他一些帖子:

  • NSTextField 轻量级的模式似乎并不适用于基于视图的表视图,其中电池的观点都是从笔尖实例化.
  • 我试过NSTextField这个解决方案描述的子类化,但我mouseDown没有调用我的重写方法.被覆盖awakeFromNibviewWillDraw(在这篇文章中提到)称为.当然,mouseDown如果我将文本字段放在表视图之外的某处,则会调用它.

相比之下,NSSegmentedControl我的单元格视图中的a更改其值而不先选择行.


以下是根据公认的回复改编的工作解决方案:

在大纲视图子类中:

-(void)mouseDown:(NSEvent *)theEvent {
    [super mouseDown:theEvent];

    // Forward the click to the row's cell view
    NSPoint selfPoint = [self convertPoint:theEvent.locationInWindow fromView:nil];
    NSInteger row = [self rowAtPoint:selfPoint];
    if (row>=0) [(CellViewSubclass *)[self viewAtColumn:0 row:row makeIfNecessary:NO]
            mouseDownForTextFields:theEvent];
}
Run Code Online (Sandbox Code Playgroud)

在表格单元格视图子类中:

// Respond to clicks within text fields only, because other clicks …
Run Code Online (Sandbox Code Playgroud)

cocoa nstextfield nstableview mousedown

27
推荐指数
3
解决办法
8697
查看次数

如何让NSTableView滚动到最近添加的行?

我正在动态地向NSTableView添加行.当我发出[table reloadData]时,我可以看到滚动视图移动,如果我手动移动它,我可以看到表上的新值.但是如何自动滚动?

cocoa objective-c nstableview nsscrollview

23
推荐指数
2
解决办法
1万
查看次数

在拖放过程中打开NSTableView中的间隙

我有一个简单的单列,基于视图的NSTableView,其中包含可以拖动的项目以重新排序它们.在拖放过程中,我想制作它,以便在鼠标下方的位置打开待删除项目的间隙.当您拖动以重新排序曲目时,GarageBand会执行类似的操作(此处为视频:http://www.screencast.com/t/OmUVHcCNSl).据我所知,在NSTableView中没有内置的支持.

有没有其他人试图将此行为添加到NSTableView并找到了一个很好的解决方案?我已经想到并尝试了几种方法而没有取得多大成功.我的第一个想法是通过发送-noteHeightOfRowsWithIndexesChanged:我的数据源的-tableView:validateDrop:...方法,然后返回正常高度的两倍,在拖动过程中将鼠标下方行的高度加倍-tableView:heightOfRow:.不幸的是,我可以说,NSTableView在拖放期间不会更新其布局,因此尽管调用noteHeightOfRowsWithIndexesChanged:,行高度实际上并未更新.

请注意,我正在使用基于视图的NSTableView,但我的行并不复杂,以至于如果这样做有助于实现此目的,我无法移动到基于单元格的表视图.我知道在拖动完成后,为放置的项目设置间隙动画的简单内置功能.我正在寻找一种在拖拽进行过程中打开间隙的方法.此外,这是一个应用程序在Mac App Store中出售,因此它不能使用私有API.

编辑:我刚刚向Apple提交了一个增强请求,要求内置支持此行为:http://openradar.appspot.com/12662624.Dupe,如果你也想看到它.更新:我请求的增强功能是在OS X 10.9 Mavericks中实现的,现在可以使用NSTableView API实现此行为.请参阅NSTableViewDraggingDestinationFeedbackStyleGap.

macos cocoa drag-and-drop objective-c nstableview

22
推荐指数
3
解决办法
4562
查看次数