OK,我要试图解释如何把你的tableView但我打算用斯威夫特
现在你有这样的:
class LessonDetailsViewController: UIViewController { @IBOutlet var detailsTable: UITableView! }
你必须让这个视图控制器安慰两个必要的协议为的tableView工作
所以添加的UITableViewDelegate和UITableViewDataSource
所以,现在的代码看起来象
class LessonDetailsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet var detailsTable: UITableView! }
如果您正确进行更改,则会出现错误{LessonDetailsViewController不舒服........}。这是因为UITableViewDataSource有两个必须的函数需要实现。两种协议都有很多,但它们是可选的。
第一个功能是女巫描述每个看起来像什么。
func tableView(_ tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{}
第二个是女巫告诉tableView显示多少行。
func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int{}
最后你必须连接tableView。
override func viewDidLoad() {
super.viewDidLoad()
detailsTable.delegate = self
detailsTable.dataSource = self
}
协议通常定义一些功能,但没有实现它们。所以在源代码中,tableView使用这个函数,但你必须首先实现它们。通过在UIViewController旁边添加UITableViewDataSource,你基本上告诉系统LessonDetailsViewController将实现这些函数,tableView需要
非常感谢Mike!我清楚地理解,这个观点是盲目地寻找控制器上的方法来调用或者不执行协议。我一定会看到它的更清晰和更具可读性,让协议得以实现,但如果没有在课堂上定义此协议,功能“不起作用”?希望这是有道理的。 – Brian 2015-04-01 17:02:13