以编程方式在UITableViewCell下添加UITextView和UIImageView Swift 4
问题描述:
我想在UITableViewCell下添加一张图片和一些文本。下面是我想达到的效果:以编程方式在UITableViewCell下添加UITextView和UIImageView Swift 4
但我只能用纯代码实现的UITableViewCell。任何人都知道如何在UITableViewCell下面或上面添加图片或文本?任何建议,将不胜感激。这是我目前的结果是:
这里是我的代码:
import UIKit
class AboutViewController : UITableViewController {
private let about = ["About us"]
private let termsOfService = ["Terms of service"]
private let privacyPolicies = ["Privacy policies"]
private let openSourceLicense = ["Open Source Libraries"]
private let sections = ["about", "termsOfService", "privacyPolicies", "openSourceLicense"]
let myTableView: UITableView = {
let mt = UITableView()
return mt
}()
override func viewDidLoad() {
super.viewDidLoad()
// register cell name
myTableView.register(UITableViewCell.self, forCellReuseIdentifier: "MyCell")
// set DataSource
myTableView.dataSource = self
// set Delegate
myTableView.delegate = self
}
override func numberOfSections(in tableView: UITableView) -> Int {
return sections.count
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return tableView.rowHeight
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.section == 0 {
print("Value: \(about[indexPath.row])")
} else if indexPath.section == 1 {
print("Value: \(termsOfService[indexPath.row])")
} else if indexPath.section == 2 {
print("Value: \(privacyPolicies[indexPath.row])")
} else if indexPath.section == 3 {
print("Value: \(openSourceLicense[indexPath.row])")
}
}
// return the number of cells each section.
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return about.count
} else if section == 1 {
return termsOfService.count
} else if section == 2 {
return privacyPolicies.count
} else if section == 3 {
return openSourceLicense.count
} else {
return 0
}
}
// return cells
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "MyCell")
if indexPath.section == 0 {
cell.accessoryType = .disclosureIndicator
cell.textLabel?.textAlignment = .left
cell.textLabel?.text = "\(about[indexPath.row])"
} else if indexPath.section == 1 {
cell.accessoryType = .disclosureIndicator
cell.textLabel?.textAlignment = .left
cell.textLabel?.text = "\(termsOfService[indexPath.row])"
} else if indexPath.section == 2 {
cell.accessoryType = .disclosureIndicator
cell.textLabel?.textAlignment = .left
cell.textLabel?.text = "\(privacyPolicies[indexPath.row])"
} else if indexPath.section == 3 {
cell.accessoryType = .disclosureIndicator
cell.textLabel?.textAlignment = .left
cell.textLabel?.text = "\(openSourceLicense[indexPath.row])"
}
return cell
}
}
答
感谢@Larme所有帮助。添加以下代码将能够一个UIImage添加到标题(这意味着要实现TableHeaderView):
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let logoView = UIImageView()
if section == 0 {
logoView.contentMode = .scaleAspectFit
let logo: UIImage = #imageLiteral(resourceName: "IMG_0517")
logoView.image = logo
view.addSubview(logoView)
return logoView
} else {
return nil
}
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if section == 0 {
return 200
} else {
return tableView.rowHeight
}
}
下面是最终结果表明:
如果你想在UITableViewCell下添加一些文本,您可以添加一个页脚到最后一节。
什么阻止你添加图片和描述?你有什么问题? – rmaddy
如果有更多的项目,图像也会滚动吗?如果不是,最简单的方法是在'self.view'上添加一个UIImageView,它的原点是'self.tableView'的末尾。否则,你有关创建自定义'UITableViewCell'的问题?在'cellForRowAtIndexPath:'中管理各种'UITableViewCell'? – Larme
@rmaddy我只是不知道如何添加图片和描述... – user174782