我公司的意外事件导致我被选中在短时间内编写和发布iphone应用程序,虽然我没有Objective C的经验。我在使用一些语法时遇到了麻烦: / p>
我有以下方法定义:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
}
它位于使用此接口定义的类中:
@interface TableExampleViewController : UIViewController
<UITableViewDelegate, UITableViewDataSource>
{
NSArray *lightbulbs;
}
方法声明是什么意思?我了解UITableViewCell *)
是返回类型,cellForRowAtIndexPath
是方法名称,(NSIndexPath *) indedPath
是参数,但tableView:(UITableView *)tableView
的意义是什么?我假设它与该类实现的协议有关。 c#中的等效语法是什么?
答案 0 :(得分:4)
在Objective-C中,方法名称包含所有参数名称,因此方法的名称为
tableView:cellForRowAtIndexPath:
包括冒号:
。
它与协议实现无关 - 它只是在Objective-C中命名方法的方式。所以假想的C#等价物只是
UITableViewCell tableViewcellForRowAtIndexPath(UITableView tableView, NSIndexPath indexPath)
答案 1 :(得分:2)
tableView: cellForRowAtIndexPath:
是方法名称,它与c#的命名不同。在c#中,方法定义可能是
UITableViewCell GetCellFromTableViewAtIndexPaht(UITableView tableView, NSIndexPath indexPath)
答案 2 :(得分:1)
这是委托设计模式。基本上,UIViewController类中的UITableView实例要求视图控制器为指定的索引提供UITableViewCell。因此,假设您在视图控制器中有一系列歌曲,并且您希望它们显示在表格视图中。然后你将创建一个新的UITableViewCell,将它的textLabel.text设置为指定索引(indexPath.row)的歌曲标题并返回单元格。因为出于性能原因你应该重用UITableViewCells,我建议你阅读文档中的Table View Programming Guide,特别是Populating a Table View