2017-10-04 73 views
0

我想在UITableViewCell下添加一张图片和一些文本。下面是我想达到的效果:以编程方式在UITableViewCell下添加UITextView和UIImageView Swift 4

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

什么阻止你添加图片和描述?你有什么问题? – rmaddy

+0

如果有更多的项目,图像也会滚动吗?如果不是,最简单的方法是在'self.view'上添加一个UIImageView,它的原点是'self.tableView'的末尾。否则,你有关创建自定义'UITableViewCell'的问题?在'cellForRowAtIndexPath:'中管理各种'UITableViewCell'? – Larme

+0

@rmaddy我只是不知道如何添加图片和描述... – user174782

回答

0

感谢@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下添加一些文本,您可以添加一个页脚到最后一节。

相关问题