代码之家  ›  专栏  ›  技术社区  ›  Vincent

在UITableViewCell下以编程方式添加UITextView和UIImageView Swift 4

  •  0
  • Vincent  · 技术社区  · 8 年前

    Here is what I want to achieve

    但我只能用纯代码实现UITableViewCell。有人知道如何在UITableViewCell下方或上方添加图片或文本吗?如有任何建议,我们将不胜感激。以下是我当前的结果:

    My current result

    以下是我的代码:

    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
        }
    }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Vincent    8 年前

    谢谢@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
            }
    
        } 
    

    Final result picture

    如果您想在UITableViewCell下添加一些文本,可以在最后一节中添加页脚。