gpt4 book ai didi

ios - 如何使用 Swift 在 Tableview Cell 中添加 UITableview

转载 作者:行者123 更新时间:2023-11-29 05:12:59 51 4
gpt4 key购买 nike

在我的场景中,我尝试在静态 UITableview 单元格中添加动态 UITableview。如何实现这一目标?我尝试了下面的代码,但它对我不起作用。

基于动态表格 View 单元格计数需要重新调整静态表格 View 单元格高度。请提供一些示例代码。

Tableview代码

import UIKit

class CustomCell: UITableViewCell,UITableViewDataSource,UITableViewDelegate {

var dataArr:[String] = []
var subMenuTable:UITableView?
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style , reuseIdentifier: reuseIdentifier)
setUpTable()
}

required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
setUpTable()
}

override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
setUpTable()
}

func setUpTable(){
subMenuTable = UITableView(frame: CGRectZero, style:UITableViewStyle.Plain)
subMenuTable?.delegate = self
subMenuTable?.dataSource = self
self.addSubview(subMenuTable!)
}

override func layoutSubviews() {
super.layoutSubviews()
subMenuTable?.frame = CGRectMake(0.2, 0.3, self.bounds.size.width-5, self.bounds.size.height-5)
}

override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}

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

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("cellID")

if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cellID")
}

cell?.textLabel?.text = dataArr[indexPath.row]

return cell!
}
}

最佳答案

创建一个单一 View 项目,在 Storyboard中添加 TableView 并设置其数据源和委托(delegate)

对firstViewController.swift执行如下代码

import UIKit

class firstViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 3;
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1;
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:CustomCell? = tableView.dequeueReusableCellWithIdentifier("Cell") as? CustomCell
if cell == nil {
cell = CustomCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
}
cell?.dataArr = ["subMenu->1","subMenu->2","subMenu->3","subMenu->4","subMenu->5"]
return cell!
}

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 150.0
}
}

创建一个新文件 CustomCell.swift,它是 UITableViewCell 的子类,并且不要使用 xib 选择该文件,该文件没有 .xib 文件表,并且将以编程方式创建其单元格。

对 CustomCell.swift 执行如下代码

import UIKit

class CustomCell: UITableViewCell,UITableViewDataSource,UITableViewDelegate {

var dataArr:[String] = []
var subMenuTable:UITableView?
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style , reuseIdentifier: reuseIdentifier)
setUpTable()
}

required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
setUpTable()
}

override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
setUpTable()
}

func setUpTable(){
subMenuTable = UITableView(frame: CGRectZero, style:UITableViewStyle.Plain)
subMenuTable?.delegate = self
subMenuTable?.dataSource = self
self.addSubview(subMenuTable!)
}

override func layoutSubviews() {
super.layoutSubviews()
subMenuTable?.frame = CGRectMake(0.2, 0.3, self.bounds.size.width-5, self.bounds.size.height-5)
}

override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}

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

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("cellID")

if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cellID")
}

cell?.textLabel?.text = dataArr[indexPath.row]

return cell!
}
}

我希望它对你有用......:)

关于ios - 如何使用 Swift 在 Tableview Cell 中添加 UITableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59498607/

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