在iOS开发中,如果一个tableViewCell在另一个tableView中,可以通过以下方式同时找到两个tableView的tableView。
示例代码如下:
// 在tableViewCell所在的类中定义代理协议
protocol TableViewCellDelegate: AnyObject {
func didFindTableView(tableView: UITableView)
}
class TableViewCell: UITableViewCell {
weak var delegate: TableViewCellDelegate?
// 在tableView的代理方法中调用代理方法,将tableView的引用传递给tableViewCell
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell
cell.delegate?.didFindTableView(tableView: tableView)
return cell
}
}
superview
属性获取到父视图,然后再通过父视图的superview
属性获取到所在的tableView。示例代码如下:
class TableViewCell: UITableViewCell {
// 在tableViewCell中获取所在的tableView
func findTableView() -> UITableView? {
var view = superview
while view != nil {
if let tableView = view as? UITableView {
return tableView
}
view = view?.superview
}
return nil
}
}
以上两种方式都可以同时找到两个tableView的tableView。根据具体的需求和代码结构,选择适合的方式即可。
注意:以上代码示例为Swift语言,如果使用Objective-C语言开发,可以进行相应的语法转换。
领取专属 10元无门槛券
手把手带您无忧上云