gpt4 book ai didi

objective-c - 如何子类 NSArrayController 来选择添加 : 上的文本字段

转载 作者:行者123 更新时间:2023-12-03 17:30:16 25 4
gpt4 key购买 nike

我确信这很简单,但我仍然在学习。

我有一个 NSTableView,它连接到数组 Controller 以显示 coredata 对象。该表不可编辑。当选择单个记录时,我设置了一个可见的 subview ,其中保存了选择的值。

我试图做到这一点,以便当我在数组 Controller 上按下连接到 add: 的 + 按钮时,将创建一个新条目,并且焦点将跳转到 subview 中的项目描述文本字段,以便当 subview 出现时,用户可以立即开始输入,而无需选择新的排列对象行,然后选择文本字段。

有什么想法吗?

我会发布屏幕截图,但我成为这里的用户还不够长。

最佳答案

Big Nerd Ranch 的 Cocoa 书(第 4 版)在第 9 章中有一个这样的例子。他们没有使用 NSArrayController 的 -add: 方法作为 + 按钮,而是使用自定义方法来创建对象,将其插入数组中,处理正在进行的编辑和撤消管理器分组,最后选择所需的字段进行编辑。摘录如下:

- (IBAction)createEmployee:(id)sender
{
NSWindow *w = [tableView window];
// Try to end any editing that is taking place
BOOL editingEnded = [w makeFirstResponder:w];
if (!editingEnded) {
NSLog(@"Unable to end editing");
return; }
NSUndoManager *undo = [self undoManager];
// Has an edit occurred already in this event?
if ([undo groupingLevel] > 0) {
// Close the last group
[undo endUndoGrouping];
// Open a new group
[undo beginUndoGrouping];
}
// Create the object
Person *p = [employeeController newObject];
// Add it to the content array of ’employeeController’
[employeeController addObject:p];
// Re-sort (in case the user has sorted a column)
[employeeController rearrangeObjects];
// Get the sorted array
NSArray *a = [employeeController arrangedObjects];
// Find the object just added
NSUInteger row = [a indexOfObjectIdenticalTo:p];
NSLog(@"starting edit of %@ in row %lu", p, row);
// Begin the edit in the first column
[tableView editColumn:0
row:row
withEvent:nil
select:YES];
}

完整实现位于 https://github.com/preble/Cocoa4eSolutions .

关于objective-c - 如何子类 NSArrayController 来选择添加 : 上的文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22876415/

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