swift 具有默认值的协议
swift protocol with default value
我正在通过重写自定义表视图实现来练习 swift 协议。
protocol PreviewModuleViewDataSource {
func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int
func previewModuleView(_ moduleView: PreviewModuleView, cellForItemAt indexPath: IndexPath) -> PreviewModuleViewItem
}
我有部分中项目数的协议和索引路径中的 "cell for item"..
然后我像这样扩展我的协议:
func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int {
return dataSource.count
}
func previewModuleView(_ moduleView: PreviewModuleView, cellForItemAt indexPath: IndexPath) -> PreviewModuleViewItem {
let item = PreviewModuleViewItem()
item.image = UIImage(named: "ItunesArtwork")
return item
}
我的问题是如何在我的核心 class 中实际获得 "dataSource.count" 的值,它将使用数据?
谢谢
我相信您是在问如何在 PreviewModuleView
对象中使用从 func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int
返回的值?
protocol PreviewModuleViewDataSource: class {
func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int
func previewModuleView(_ moduleView: PreviewModuleView, cellForItemAt indexPath: IndexPath) -> PreviewModuleViewItem
}
class PreviewModuleView {
weak var dataSource: PreviewModuleViewDataSource?
func useValueExample() {
if let numberOfItems = dataSource?.previewModuleView(self, numberOfItemsInSection: 0) {
print("Number of items in section 0 = \(numberOfItems)")
}
}
}
例如,当您使用 table 视图时,您必须将视图控制器指定为数据源。因此,您需要一个数据源变量来将委托分配给。当你想访问一个部分中的项目数时,你可以在数据源上调用该函数。
在此示例中,我将协议更改为 class
协议并使数据源变量变弱,这是我推荐的做法。
我正在通过重写自定义表视图实现来练习 swift 协议。
protocol PreviewModuleViewDataSource {
func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int
func previewModuleView(_ moduleView: PreviewModuleView, cellForItemAt indexPath: IndexPath) -> PreviewModuleViewItem
}
我有部分中项目数的协议和索引路径中的 "cell for item"..
然后我像这样扩展我的协议:
func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int {
return dataSource.count
}
func previewModuleView(_ moduleView: PreviewModuleView, cellForItemAt indexPath: IndexPath) -> PreviewModuleViewItem {
let item = PreviewModuleViewItem()
item.image = UIImage(named: "ItunesArtwork")
return item
}
我的问题是如何在我的核心 class 中实际获得 "dataSource.count" 的值,它将使用数据?
谢谢
我相信您是在问如何在 PreviewModuleView
对象中使用从 func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int
返回的值?
protocol PreviewModuleViewDataSource: class {
func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int
func previewModuleView(_ moduleView: PreviewModuleView, cellForItemAt indexPath: IndexPath) -> PreviewModuleViewItem
}
class PreviewModuleView {
weak var dataSource: PreviewModuleViewDataSource?
func useValueExample() {
if let numberOfItems = dataSource?.previewModuleView(self, numberOfItemsInSection: 0) {
print("Number of items in section 0 = \(numberOfItems)")
}
}
}
例如,当您使用 table 视图时,您必须将视图控制器指定为数据源。因此,您需要一个数据源变量来将委托分配给。当你想访问一个部分中的项目数时,你可以在数据源上调用该函数。
在此示例中,我将协议更改为 class
协议并使数据源变量变弱,这是我推荐的做法。