gringoireDM / LNZTreeView

A swift TreeView
MIT License
236 stars 47 forks source link

I modified the UITableViewCell sub class to include subtitle not working #15

Open ghost opened 5 years ago

ghost commented 5 years ago

I modified the UITableViewCell sub class to include subtitle not working. When I collapse and expand the parent node few times, the detail label text in children is copied to parent. You have not provided your component to include subtitle by default, I need to modify your code, to do that. I hope you have given the screenshot with subtitle example, but your component doesn't have the feature

class CustomUITableViewCell: UITableViewCell
{
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: .subtitle, reuseIdentifier: reuseIdentifier)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func layoutSubviews() {
        super.layoutSubviews();

        guard var imageFrame = imageView?.frame else { return }

        let offset = CGFloat(indentationLevel) * indentationWidth
        imageFrame.origin.x += offset
        imageView?.frame = imageFrame

    }
}

detail label as follows in

 func treeView(_ treeView: LNZTreeView, cellForRowAt indexPath: IndexPath, forParentNode parentNode: TreeNodeProtocol?, isExpanded: Bool) -> UITableViewCell {

        let node: Node
        if let parent = parentNode as? Node {
            node = parent.children![indexPath.row]
        } else {
            node = root[indexPath.row]
        }
//        var cell: UITableViewCell?

        //        let cell = treeView.dequeueReusableCell(withIdentifier: "cell", style: .default, for: node, inSection: indexPath.section)
        var cell = treeView.dequeueReusableCell(withIdentifier: "cell", for: node, inSection: indexPath.section)
        if !node.descriptionText.isEmpty {
            cell.detailTextLabel!.numberOfLines = 2;
            cell.detailTextLabel!.lineBreakMode = .byWordWrapping;
            cell.detailTextLabel!.text = node.descriptionText
            cell.detailTextLabel?.sizeToFit()
        }

        if node.isExpandable {
            if node.children!.count > 0 {
            cell.textLabel?.textColor = UIColor.black
            cell.textLabel?.font = UIFont(name:"HelveticaNeue-Bold", size: 16.0)
            }
            if isExpanded {
                cell.imageView?.image = #imageLiteral(resourceName: "index_folder_indicator_open")
            } else {
                cell.imageView?.image = #imageLiteral(resourceName: "index_folder_indicator")
            }
        } else {

            cell.textLabel?.textColor = UIColor.darkGray
            cell.textLabel?.font = UIFont(name:"HelveticaNeue-Bold", size: 16.0)
            cell.imageView?.image = nil
        }

        cell.textLabel?.text = node.identifier

        return cell
    }
gringoireDM commented 5 years ago

I don't have quite clear what you are trying to do, and how. The library does support custom cells.