 
 @objc(MSTableViewSectionDataSource)
 open class TableViewSectionDataSource: NSObject, UITableViewDataSource {
-    
-    open weak var delegate: TableViewDataSourceDelegate?
     open fileprivate(set) var dataSources: [TableViewDataSource]?
     open var enableIndexing: Bool  = false
     open var showDefaultHeaderTitle: Bool = true
+    open weak var delegate: TableViewDataSourceDelegate? {
+        didSet {
+            self.dataSources?.forEach {
+                $0.delegate = self.delegate
+            }
+        }
+    }
     
     public convenience init(dataSources: [TableViewDataSource]) {
         self.init()

            self.items?.insert(item, at: destinationIndexPath.row)
        }
    }
    
    
    open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        var identifier: String?

            identifier = cellIdentifier
        }
        
        identifier = self.delegate?.changeCellIdentifier?(identifier, forIndexPath: indexPath) ?? identifier

        let cell = tableView.dequeueReusableCell(withIdentifier: identifier!, for: indexPath)
        
        if cell is TableViewCellDataSource {
