在 Swift 中使用协议
Using protocol in Swift
我想使用协议。我有一个 collection 视图和属于此 collection 视图的 collection 视图单元格。我在这个单元格中有一个按钮。当用户点击此按钮时,我想在 collectionview class(不是单元格 class)中调用一个方法。
我正在使用以下代码定义我的 单元格 class:
protocol testPro {
func replyClicked()
}
class MessageGalleryViewControllerCellCollectionViewCell: UICollectionViewCell {
var test1: testPro?
// ...
}
然后当用户点击按钮时,系统会在 单元格 class.
中调用以下方法
func replyAction(sender:UIButton!)
{
test1?.replyClicked()
}
我的 collection 视图 class:
class ReceivedPhotosViewController: UIViewController,UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, testPro {
func replyClicked() {
print("clicked")
}
}
但我看不到 "clicked" 之类的日志。所以它不起作用。问题出在哪里?
您没有将 test1
分配给您的手机。在您的 cellForItemAtindexPath
中,在实例化单元格后放置 cell.test1 = self
。
我想使用协议。我有一个 collection 视图和属于此 collection 视图的 collection 视图单元格。我在这个单元格中有一个按钮。当用户点击此按钮时,我想在 collectionview class(不是单元格 class)中调用一个方法。
我正在使用以下代码定义我的 单元格 class:
protocol testPro {
func replyClicked()
}
class MessageGalleryViewControllerCellCollectionViewCell: UICollectionViewCell {
var test1: testPro?
// ...
}
然后当用户点击按钮时,系统会在 单元格 class.
中调用以下方法func replyAction(sender:UIButton!)
{
test1?.replyClicked()
}
我的 collection 视图 class:
class ReceivedPhotosViewController: UIViewController,UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, testPro {
func replyClicked() {
print("clicked")
}
}
但我看不到 "clicked" 之类的日志。所以它不起作用。问题出在哪里?
您没有将 test1
分配给您的手机。在您的 cellForItemAtindexPath
中,在实例化单元格后放置 cell.test1 = self
。