Ios 是否符合Swift中的UITableViewDelegate和UITableViewDatasource?
我正在学习swift 2.0,我想知道您是否仍然需要添加代码Ios 是否符合Swift中的UITableViewDelegate和UITableViewDatasource?,ios,swift,uitableview,Ios,Swift,Uitableview,我正在学习swift 2.0,我想知道您是否仍然需要添加代码tableView.datasource=self和tableView.delegate=self以符合协议 示例代码: class AboutViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { override func viewDidLoad() { super.viewDidLoad()
tableView.datasource=self
和tableView.delegate=self
以符合协议
示例代码:
class AboutViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
{
override func viewDidLoad()
{
super.viewDidLoad()
// conform to protocols
aboutTableView.dataSource = self
aboutTableView.delegate = self
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return 2
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
return 50
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
// Code here
}
}
现在,表视图在每个单元格中加载正确的数据
但是,如果我从viewDidLoad
中删除aboutTableView.datasource=self
和aboutTableView.delegate=self
,则我的表视图为空。为什么会这样
这段代码是否仍然需要,因为我看到很多youtube教程在swift中不再包含这段代码,我很困惑为什么我的教程没有它就不能工作?是的,仍然需要一些作业。或者通过代码显式地 或 相反,您可以在interface builder中连接它们,使通过代码的显式赋值过时。这可能是很多教程所做的 是的,仍然需要一些作业。
或者通过代码显式地 或 相反,您可以在interface builder中连接它们,使通过代码的显式赋值过时。这可能是很多教程所做的
首先,这完全独立于哪种语言 您可以使用Swift或Objective-C 但有两种不同的情况可能导致混淆: A
UITableViewController
子类:
UITableViewController
已符合UITableViewDataSource
和UITableViewDelegate
。它有一个tableView
属性,
其dataSource
和delegate
属性已设置为self
在子类中,通常重写
数据源和委托方法
AUIViewController
带有UITableView
属性的子类:
在这里,您在子类中定义了一个UITableView
属性
并在代码中初始化它,或者
将其连接到interface builder中的表视图
在这种情况下,您必须设置数据源
和委托
tableview的属性,在代码中或在接口中
建筑商,如中所述
如果数据源和委托是视图控制器本身,
然后您必须明确声明协议一致性,
实施
数据源和委托方法(但不重写
超类方法)
当然,在这两种情况下,表视图数据源和委托 可以设置为不同的对象,而不必
视图控制器本身。首先,它完全独立于哪种语言 您可以使用Swift或Objective-C 但有两种不同的情况可能导致混淆: A
UITableViewController
子类:
UITableViewController
已符合UITableViewDataSource
和UITableViewDelegate
。它有一个tableView
属性,
其dataSource
和delegate
属性已设置为self
在子类中,通常重写
数据源和委托方法
AUIViewController
带有UITableView
属性的子类:
在这里,您在子类中定义了一个UITableView
属性
并在代码中初始化它,或者
将其连接到interface builder中的表视图
在这种情况下,您必须设置数据源
和委托
tableview的属性,在代码中或在接口中
建筑商,如中所述
如果数据源和委托是视图控制器本身,
然后您必须明确声明协议一致性,
实施
数据源和委托方法(但不重写
超类方法)
当然,在这两种情况下,表视图数据源和委托 可以设置为不同的对象,而不必
视图控制器本身。与语言无关。–但请注意,如果您有UIViewController或UITableViewController子类,则情况略有不同。后者已经为自己设置了tableView的委托和数据源。从功能上讲,Swift的行为与Objective没有什么不同。Swift的力量来自于语言的特点,即语言独立性但请注意,如果您有UIViewController或UITableViewController子类,则情况略有不同。后者已经为自己设置了tableView的委托和数据源。从功能上讲,Swift的行为与Objective没有什么不同。Swift的力量来自于语言的特性。很好的补充,我不知道UITableViewController已经是它自己的数据源和委托-我想我从来没有子类化过一个,但总是使用常规的UIViewController。很好的补充,我不知道UITableViewController已经是它自己的数据源和委托了,我想我从来没有子类化过它,而是一直使用常规的UIViewController。