gpt4 book ai didi

ios - 如何在另一个 ViewController 中包含 UITableViewCell

转载 作者:行者123 更新时间:2023-11-30 11:41:31 25 4
gpt4 key购买 nike

我有一个包含 UITableViewCell 的表格 View ,一切正常。但是我需要使用相同的 UITableViewCell 并将其显示在另一个 ViewController 中。这在 iOS 中可能吗?

来自 Android 背景,这可以通过 include 标签轻松完成。在 iOS 中如何实现呢?

最佳答案

如果您打算获取单元格实例并将其显示在另一个 View Controller 中。简短的回答是肯定的,我们可以做到。

UITableViewCell 本质上是一个 UIView,因此没有理由不能将其添加为 UITableView 之外的 subview 。这绝对是一种矫枉过正,因为您可以通过设计自定义 UIView 来实现相同的结果,在其中您可以显示 UITableViewCell 中显示的数据。

这是一个非常基本的示例,说明如何做到这一点。在此示例中,我们获取包含数据的选定单元格,然后在新的 ViewController 中呈现我们创建的副本。

import UIKit

class ViewController: UITableViewController {

private let myArray: [String] = ["First","Second","Third"]

override func viewDidLoad() {
super.viewDidLoad()

tableView.register(UITableViewCell.self, forCellReuseIdentifier: "MyCell")
tableView.dataSource = self
tableView.delegate = self
view.addSubview(tableView)
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = OtherViewController()
vc.cell = tableView.cellForRow(at: indexPath)?.copyView()
// notice the .copyView() which makes the copy of that cell
navigationController?.pushViewController(vc, animated: true)
}

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath as IndexPath)
cell.textLabel!.text = "\(myArray[indexPath.row])"
return cell
}
}

class OtherViewController: UIViewController {

var cell: UITableViewCell! {
didSet {
// positioning the cell
cell.frame.origin.y = 100 // magic number - remove
view.addSubview(cell)
}
}

override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
}

}


//MARK: - UIView Extensions (to make the copy of the cell)

extension UIView {
func copyView<T: UIView>() -> T {
return NSKeyedUnarchiver.unarchiveObject(with: NSKeyedArchiver.archivedData(withRootObject: self)) as! T
}
}

关于ios - 如何在另一个 ViewController 中包含 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49242102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com