簡體   English   中英

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

[英]Add UITextView and UIImageView under UITableViewCell programmatically Swift 4

我想在UITableViewCell下添加一張圖片和一些文本。 這是我想要實現的結果:

這是我想要實現的

但是我只能用純代碼實現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下添加一些文本,則可以在最后一節中添加頁腳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM