1

尽管我在 Objective C 方面没有经验,但我公司的意外事件导致我在很短的时间内被起草并发布了一个 iphone 应用程序。我在遵循一些语法时遇到了麻烦:

我有以下方法定义:

- (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath {

}

它存在于使用此接口定义的类中:

@interface TableExampleViewController : UIViewController 
    <UITableViewDelegate, UITableViewDataSource>
{
    NSArray *lightbulbs;
}

方法声明是什么意思?我理解UITableViewCell *)是返回类型,cellForRowAtIndexPath是方法名,(NSIndexPath *) indedPath是参数,但是有什么意义tableView:(UITableView *)tableView呢?我认为它与类实现的协议有关。c# 中的等效语法是什么?

4

3 回答 3

4

在 Objective-C 中,方法名包括所有参数名,所以方法名是

tableView:cellForRowAtIndexPath:

其中包括两个冒号:

它与协议实现无关——它只是在 Objective-C 中命名方法的方式。所以想象中的 C# 等价物就是

UITableViewCell tableViewcellForRowAtIndexPath(UITableView tableView, NSIndexPath indexPath)
于 2012-05-10T14:43:33.817 回答
2
tableView: cellForRowAtIndexPath:

是方法名,和c#的命名不同。在 c# 中,方法定义可能是

UITableViewCell GetCellFromTableViewAtIndexPaht(UITableView tableView, NSIndexPath indexPath)
于 2012-05-10T14:47:23.737 回答
1

这就是委托设计模式。基本上,您的 UIViewController 类中的 UITableView 实例要求您的视图控制器为指定的索引提供一个 UITableViewCell。因此,假设您的视图控制器中有一系列歌曲,并且您希望它们出现在表格视图中。然后,您将创建一个新的 UITableViewCell,将其 textLabel.text 设置为指定索引 (indexPath.row) 处歌曲的标题并返回该单元格。因为出于性能原因你应该重用 UITableViewCells,我建议阅读文档中的 Table View Programming Guide,尤其是Populating a Table View

于 2012-05-10T14:44:04.183 回答