2017-10-28 164 views
-1

目的如何共享多个UITableView的细胞

之间相同的UIView当任何3个蓝色按钮的用户点击,所有按钮更改为相同的颜色。

注:这是一个共享的发展观问题的抽象,这是很重要的,只有一个UIView的是在我的三排共享(或模仿)

这里是一个编译斯威夫特项目:

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() 
     } 
    } 
} 

任何帮助表示赞赏。

回答

0

UITableViewCell概念被制成非常彼此独立。

所以你唯一可以做在你的视图控制器一个布尔标志,那么你初始化你的3个单元与此标志。

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