如何在多个 UITableView 单元格之间共享相同的 UIView
Posted
技术标签:
【中文标题】如何在多个 UITableView 单元格之间共享相同的 UIView【英文标题】:How To Share Same UIView Between Multiple UITableView Cells 【发布时间】:2017-10-28 17:39:24 【问题描述】:目标
当用户点击 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】:UITableViewCell
的概念被制作得非常独立。
所以你唯一能做的就是在你的 ViewController 中有一个 bool 标志,然后你用这个标志初始化你的 3 个单元格。
最后,每次按下按钮时,您都会切换标志并重新加载您的 tableView。
【讨论】:
以上是关于如何在多个 UITableView 单元格之间共享相同的 UIView的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UITableView 中一次添加多个单元格的边框?
如何在 UITableView 中的单元格之间添加分隔符单元格/uiview?