【问题标题】:associatedtype with tableview cell与 tableview 单元格关联的类型
【发布时间】:2017-12-28 09:27:54
【问题描述】:

我在 tablview 单元格 (NESTED TABLEVIEW) 中有 tableview 单元格 (OrderMasterCell)

OrderMasterCell 在多个视图控制器中被重用

假设 ViewController1 有 tableview 并且在 tableview 单元格 (VC1Cell) 中有一个 tableview 有单元格 OrderMasterCell (nested tableivew)

假设 ViewController2 有 tableview 并且在 tableview 单元格 (VC2Cell) 中有一个 tableview 有单元格 OrderMasterCell (nested tableivew)

我想要将OrderMasterCelldidSelectRow 委托传递给VC1Cell 的自定义委托。或VC2Cell

使用该委托,我想将 VC1 或 VC2 作为参数传递给 Cell 为此,我创建了关注

@objc protocol  OrderSubItemTableDelegate:class {
     associatedtype cellType // cell type either vc1 or vc2
     @objc optional func tableViewDidSelectRowAt(object:cellType)
}

当我尝试创建时

class VC1Cell: UITableViewCell,UITableViewDataSource,UITableViewDelegate {
      weak var delegate:OrderSubItemTableDelegate?

  }

它抛出编译时错误

Protocol 'OrderSubItemTableDelegate' 只能用作通用约束,因为它具有 Self 或关联的类型要求

明确问题

如何创建具有associatedtype 的协议属性? 喜欢weak var delegate:OrderSubItemTableDelegate?

如果有人可以帮我解决这个问题

【问题讨论】:

    标签: ios generics swift3 associated-types


    【解决方案1】:

    您以错误的方式确认协议。

     protocol  OrderSubItemTableDelegate {
    
         associatedtype cellType // cell type either vc1 or vc2
    
         static func tableViewDidSelectRowAt(object: cellType)
    }
    
    class VCCell1: UITableViewCell ,OrderSubItemTableDelegate {
    
        typealias cellType = VCCell1
    
        static func tableViewDidSelectRowAt(object: VCCell1) {
    
        }
    
    }
    

    【讨论】:

    • Piyush 感谢重播。但是我如何向那个代表确认。为此我需要像weak var delegate:OrderSubItemTableDelegate? 这样的东西,后来我可以使用delegate = self 但它显示错误
    • @PrashantTukadiya 这没有必要。您正在告诉 OBJC 快速确认协议的方式,如示例所示。参考developer.apple.com/library/content/documentation/Swift/…
    • @PrashantTukadiya 得到了吗?
    • 假设我在协议tableViewDidSelectRowAt 中有一个方法,我该如何调用该方法?
    • 我认为你没有得到我的观点从其他班级我怎么能调用tableViewDidSelectRowAt 方法? .你所展示的是正确的。您已经定义了委托并在 VCCell1 中实现。但是从其他类事件我想调用协议中的函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多