chr*_*yal 5 xcode cocoa objective-c appkit cocoa-bindings
在Aaron Hillegass的" Mac OS X可可编程"第9章"插入时开始编辑"一节中,他解释了如何做到这一点.这让我感到困惑,虽然事情是,他做了一堆其他的东西.这是完整的代码清单:
- (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]) {
// 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];
[p release];
// 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
int row = [a indexOfObjectIdenticalTo:p];
NSLog(@"starting edit of %@ in row %d", p, row);
// Begin the edit in the first column
[tableView editColumn:0
row:row
withEvent:nil
select:YES];
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
1)你怎么知道你应该做所有这些事情?Apple的文档中是否有"清单"或其他内容?经验?
2)如果您还必须自己重写所有方法,这是否会破坏阵列控制器的整个目的?
编辑:我主要想知道他是如何知道的那样:(因为其他一切都非常基本且明显)
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]) {
// Close the last group
[undo endUndoGrouping];
// Open a new group
[undo beginUndoGrouping];
}
Run Code Online (Sandbox Code Playgroud)
1)你怎么知道你应该做所有这些事情?Apple 文档中有“清单”或其他内容吗?经验?
你是对的,大多数进行初始实现的人都不会想到该代码。(我想这就是本书中的原因。您可以从亚伦的经验中受益)。
该代码可能是一个或多个错误报告的结果。换句话说,您最初不会想出该代码,但您最终会想出该代码。
亲自尝试一下。删除该代码,然后查看是否可以发现正在运行的应用程序中的问题。解决这些问题需要结合 SDK 知识和调试技巧。两者都随着经验的增长而成长。
2)如果您仍然必须自己重写所有方法,这是否会破坏数组控制器的全部目的?
有人可能会说,像这样修改表格视图行为的能力是数组控制器的全部要点(作为应用程序设计的一个元素)。
| 归档时间: |
|
| 查看次数: |
991 次 |
| 最近记录: |