     /// Convenience called by init(frame:) and init(coder:). Override in subclasses if required.
     open func commonInit() {
     }
-
+    
     // MARK: - UIView overrides
     
     open override func awakeAfter(using coder: NSCoder) -> Any? {
-        guard let nibView = replacedByNibView()
+        guard subviews.isEmpty,
+            let nibView = replacedByNibView()
             else { return self }
         nibView.removePlaceholders()
         return nibView

    
    fileprivate var needsUpdateView = true
    private static var sizeForKeyDictionary = [String: CGSize]()

    fileprivate func updateViewIfNeeded() {
        if needsUpdateView {
            needsUpdateView = false

    open var placeholderViews: [UIView] {
        return []
    }
    
    // MARK: - Variables & Functions
    
    private let autoSize = CGSize(width: UITableView.automaticDimension,
