2010-08-03 29 views
0

我认为编程中理解最大的问题就是理解特定方法的作用。例如我如何阅读Objective C方法

- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 

当我看上面的方法,我知道它返回一个布尔值,并且该方法接收以下内容。

  1. NSTableView的
  2. NSTableColumn
  3. NSInteger的

不过,我不明白我需要提供正确的使用方法。 我只是返回一个布尔值?

回答

1

当表需要知道某个行和列是否可以编辑时,此方法将由您的委托(您正在实现此方法的类)中的表(或其他)调用。您只需要返回YESNO以指示是否要编辑它。

这是一个示例实现:

-(BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { 
    return NO; 
} 

这将意味着该表不能进行编辑。

这样

更为复杂的执行将只让第一行可编辑:

-(BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { 
    if (rowIndex == 0) 
     return YES; 
    else 
     return NO; 
    //This can be shortened to: 
    //return rowIndex == 0; 
} 
+0

如果您应该返回YES或NO,您如何使用return rowIndex == 1? – lampShade 2010-08-03 03:42:04

+0

在函数返回之前计算'rowIndex == 1'。该语句是'真'('YES')或'假'('NO'),它的计算结果是返回的值 – 2010-08-03 03:46:34

+0

@laShaShade:查看我的更新和@Paul W的评论 – 2010-08-03 03:54:54

1

它归结为一句话:代码告诉你怎么样,告诉你为什么。

如果你正在编写一个方法,你需要知道你为什么要这个方法并相应地记录它,也可以参考a.k.a.的评论。如果您重写某个方法,那么您希望该方法的生成者记录该方法的功能。

如果你潜入iPhone开发没有一点编程背景,你至少应该阅读Introduction to The Objective-C Programming Language。如果您想了解代码中特定方法的功能,您可以始终右键单击方法名称,然后选择“在文档中查找文本”以了解更多信息。

0

方法的名称tableView:shouldEditTableColumn:row:应该给你一个线索,它是关于编辑表视图中的行和列。你可能会猜到,因为它返回一个布尔值,所以它被调用以确定一个表视图应该编辑提供的列的提供的行。然而,这只是一个猜测,所以在这一点上(如果我昨天没有使用这种方法,并因此知道它到底是什么),我会开始使用Google搜索(或者如果我有权访问Xcode搜索Xcode中)。

Googling Cocoa文档的一个有用提示是仅在网站上搜索:developer.apple.com,因此我们将尝试site:developer.apple.com tableView:shouldEditTableColumn:row:。在这种情况下最受欢迎的是NSTableViewDelegate,这是我们想要的。