带默认值的swift协议
我正在通过重写自定义tableview实现来练习swift协议带默认值的swift协议,swift,swift4,protocols,Swift,Swift4,Protocols,我正在通过重写自定义tableview实现来练习swift协议 protocol PreviewModuleViewDataSource { func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int func previewModuleView(_ moduleView: PreviewModuleView, cellForItemA
protocol PreviewModuleViewDataSource {
func previewModuleView(_ moduleView: PreviewModuleView, numberOfItemsInSection section: Int) -> Int
func previewModuleView(_ moduleView: PreviewModuleView, cellForItemAt indexPath: IndexPath) -> PreviewModuleViewItem
}
我有第节中项目数量的协议和索引路径中的“项目单元格”
然后我扩展了我的协议,如下所示:
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
}
我的问题是如何在我的核心类中获得“dataSource.count”的值,该类将使用这些数据
谢谢我想您是在问如何在
previewModuleView
对象中使用从func previewModuleView(uu-moduleView:previewModuleView,numberofitemsinssection: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)")
}
}
}
例如,在使用表视图时,必须将视图控制器指定为数据源。因此,您需要一个数据源变量来分配委托。当您想要访问某个节中的项数时,您可以在数据源上调用该函数
在本例中,我将协议更改为类
协议,并使数据源变量变弱,这是我的建议