如何在多个UITableView单元之间共享相同的UIView

时间:2017-10-28 17:39:24

标签: ios swift uitableview uiview

目标

  

当用户点击3个蓝色按钮中的任何一个时,所有按钮都会变为相同的颜色。

注意:这是共享进度视图问题的抽象,因此在我的三行中只共享(或模仿)一个UIView非常重要

这是一个可编辑的Swift项目:

import UIKit

class ToggleButton: UIButton {
    var connectedView: UIView?
    func onPress() {
        self.isHidden = true
        self.connectedView?.isHidden = false
    }
}

class ViewController : UIViewController, UITableViewDelegate, UITableViewDataSource {

    var tableView: UITableView = UITableView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))

    var myView: UIView? = nil
    var toggleBtn: ToggleButton? = nil

    override func viewDidLoad() {
        self.setupTableView()
    }

    fileprivate func setupTableView() {
        self.tableView.dataSource = self
        self.tableView.delegate = self

        self.tableView.backgroundColor = UIColor.white
        self.tableView.isOpaque = true

        self.view.addSubview(self.tableView)
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 3
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: .default, reuseIdentifier: "CellIdentifier")

        let frame = CGRect(x: 10, y: 10, width: 30, height: 30)

        if let view = self.myView, let btn = self.toggleBtn {
            cell.addSubview(view)
            cell.addSubview(btn)
        } else {
            let myView = UIView(frame: frame)
            myView.backgroundColor = UIColor.green
            myView.isHidden = true

            cell.addSubview(myView)

            let toggleBtn = ToggleButton(frame: frame)
            toggleBtn.backgroundColor = UIColor.blue
            toggleBtn.addTarget(self, action: #selector(onPress), for: .touchUpInside)
            toggleBtn.connectedView = myView

            cell.addSubview(toggleBtn)
        }

        return cell
    }

    @objc func onPress(_ sender: Any) {
        if let button = sender as? ToggleButton {
            button.onPress()
        }
    }
}

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

JsonConverter的概念彼此非常独立。

所以你唯一可以在ViewController中使用bool标志,然后用这个标志初始化你的3个单元格。

最后每按一次按钮,你切换标志就会重新加载你的tableView。