很多关于UITableView的教程要求我们在MyUITableViewController: UITableViewController
中覆盖这个函数:
override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
return 10
}
我理解这是UITableView
中numberOfRowsInSection方法的一个实现,但我不懂语言机制。
tableView
是UITableViewController
的继承属性,而不是方法。那么覆盖是如何工作的呢?
答案 0 :(得分:3)
同一方法的Objective-C语法是
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section;
,它提供了tableView:numberOfRowsInSection:
当您习惯于Objective-C时,您会在心理上忽略tableView:
部分,并专注于numberOfRowsInSection
。
当Objective-C方法名称转换为swift时,第一个参数成为方法名称,因此您获得tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int
您的问题的简短回答是您使用该签名覆盖了该函数,而不是tableView
属性
答案 1 :(得分:1)
UITableViewController
符合UITableViewDataSource
协议:https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UITableViewDataSource_Protocol/index.html
tableView
是UITableViewDataSource
UITableViewController
有一个MyUITableViewController
override
可以{{1}}的协议函数的默认实现。