在tableView内部创建tableView
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在tableView内部创建tableView相关的知识,希望对你有一定的参考价值。
我创建了带有原型单元的tableView。在每个原型单元内是另一个带有不同原型单元的tableView。我已经将所有这些链接在一起,但是我无法修改最内部的原型单元。这就是为什么。这是相关代码:
class ViewController: UIViewController, AVAudioRecorderDelegate, UITableViewDelegate, UITableViewDataSource
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad()
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return 10
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "outerCell") as! outerCell
//would obviously make some modification to cell here, like cell.title = "test" or something
let cell2 = cell.commentTableView.dequeueReusableCell(withIdentifier: "innerCell") as! innerCell
cell2.commentText.text = "sus"
//NEED TO DIFFERENTIATE HERE ON HOW TO KNOW WHICH CELL TO RETURN
//e.g. NEED TO RETURN either cell1 or cell2, depending on the tableView
我的externalCell代码看起来像这样:
import UIKit
class outerCell: UITableViewCell, UITableViewDelegate, UITableViewDataSource
@IBOutlet weak var commentTableView: UITableView!
override func awakeFromNib()
super.awakeFromNib()
// Initialization code
commentTableView.delegate = self
commentTableView.dataSource = self
override func setSelected(_ selected: Bool, animated: Bool)
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "innerCell", for: indexPath) as! commentCell
return cell
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return 10
看,主要问题是,这两个表视图都能正常工作,但是,在第一段代码中,如果我只是做类似的事情,
if tableView == self.tableView
return cell
else ...
这将不起作用,因为tableView似乎总是self.tableView。
如何修改代码,以便实际上可以影响同一代码块中内部单元格和外部单元格中显示的文本?
另外,请注意,我知道,根据此处给出的示例,不需要这些嵌套单元格。我只是在这里简化了代码,以专注于重要的事情-我的实际代码在内部和外部单元中都发生了很多事情。
谢谢,我们将不胜感激。
您需要首先创建两个不同的单元格类。在外部类中:
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SearchPreferredJobTableViewCell
cell.responseCreateBookingObj = [unowned self] (returnObject) in
DispatchQueue.main.async
tableView.beginUpdates()
// do your logic
DispatchQueue.main.async
cell.contentView.layoutIfNeeded()
tableView.endUpdates()
return cell
//其他单元格类别声明变量
var responseCreateBookingObj : APIServiceSuccessCallback?
//从您要发送的回调发送
guard let callBack = self.responseCreateBookingObj else
return
callBack(true as AnyObject)
//也可以在用户滚动时进行管理
tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
DispatchQueue.main.async
tableView.beginUpdates()
//做你的逻辑
DispatchQueue.main.async
cell.contentView.layoutIfNeeded()
tableView.endUpdates()
以上是关于在tableView内部创建tableView的主要内容,如果未能解决你的问题,请参考以下文章
在 tableView:cellForRowAtIndexPath 中确定 iPhone 和 iPad 的不同单元格:
如何在 UITableView 的 RXswift 和 RXCocoa 中实现 tableview 单元格的内部?
如何激活按钮以从 tableview 单元格(多个单元格)内部执行操作
在 Swift 中单击 NSObject 内部的 tableView 中的项目时,如何在 NSObject 类中的 UIViewController 上的 UIView 之间正确切换?