【发布时间】:2020-09-24 06:22:44
【问题描述】:
几天以来,我尝试了所有方法,甚至尝试使用自动维度,并且估计行高度 = 44,但都没有运气。我是 UITableView 的新手,我试图用它来练习。我在stackoverflow等中到处寻找,但没有运气。我不确定我在下面的代码中做错了什么。
在视图控制器中:
reminder_tableview.frame = view.bounds
reminder_tableview.allowsSelection = false
reminder_tableview.estimatedRowHeight = 44
reminder_tableview.rowHeight = UITableView.automaticDimension
reminder_tableview.register(reminder_tableCell.self, forCellReuseIdentifier: "reminderList")
reminder_tableview.delegate = self
reminder_tableview.dataSource = self
tab2_body.addSubview(reminder_tableview)
在 UITableViewDelegate 的扩展中,UITableViewDataSource:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {return UITableView.automaticDimension}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {return 50.0}
func numberOfSections(in tableView: UITableView) -> Int {return reminder_category_user.count}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if reminder_tableisready == true {
let category_name = UILabel()
category_name.frame = CGRect(x: 20, y: 0, width: view.frame.width - 80, height: 50)
category_name.font = UIFont(name: "Arial", size: 30)
category_name.text = reminder_category_user[section]
category_name.textColor = UIColor.red
let num_of_reminder = UILabel()
num_of_reminder.frame = CGRect(x: view.frame.width - 75, y: 0, width: 70, height: 50)
num_of_reminder.font = UIFont(name: "Arial", size: 30)
num_of_reminder.text = String(reminder_final_table[section].count)
num_of_reminder.textAlignment = .right
num_of_reminder.textColor = UIColor.red
let headerView = UIView()
headerView.addSubview(category_name)
headerView.addSubview(num_of_reminder)
return headerView
} else {
return UIView()
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if reminder_tableisready == true {
return reminder_final_table[section].count
} else {
return 0
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reminderList") as! reminder_tableCell
cell.backgroundColor = UIColor(red: 15/255, green: 15/255, blue: 15/255, alpha: 1)
cell.frame.size.height = 100
cell.textLabel?.text = reminder_final_table[indexPath.section][indexPath.row].pre_title
cell.textLabel?.font = UIFont(name: "Arial", size: 18)
cell.textLabel?.numberOfLines = 0
cell.textLabel?.lineBreakMode = .byWordWrapping
cell.textLabel?.sizeToFit()
let getdatefromdatedue = Date(timeIntervalSince1970: TimeInterval(reminder_final_table[indexPath.section][indexPath.row].pre_datedue))
let duedateformat = DateFormatter()
duedateformat.dateFormat = "MMMM d, yyyy\nh:mm a"
if reminder_final_table[indexPath.section][indexPath.row].pre_datedue != 0 {
cell.layoutMargins.right = 160
cell.reminder_date_due.text = "Date Due\n\(duedateformat.string(from: getdatefromdatedue))"
} else {
cell.reminder_date_due.text = ""
}
cell.reminder_date_due.textColor = UIColor.red
cell.reminder_date_due.textAlignment = .right
cell.reminder_date_due.numberOfLines = 4
cell.reminder_date_due.font = UIFont(name: "Arial", size: 15)
return cell
}
}
class reminder_tableCell: UITableViewCell {
var reminder_date_due = UILabel()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
reminder_date_due.frame = CGRect(x: reminder_tableview.frame.width - 155, y: 0, width: 150, height: 66)
addSubview(reminder_date_due)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
【问题讨论】:
标签: ios swift uitableview autolayout