分享
三行代码  ›  专栏  ›  技术社区  ›  justADummy

Swift程序化TableView不显示单元格

  •  0
  • justADummy  · 技术社区  · 6 天前

    自定义TableView单元格

    import UIKit
    
    class TableViewCell: UITableViewCell {
        
        var titleView = UILabel()
        var descriptionView = UILabel()
        
        override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
            super.init(style: style, reuseIdentifier: reuseIdentifier)
            addSubview(titleView)
            addSubview(descriptionView)
            
            configureTitleView()
            configureDescriptionView()
            
            setTitleConstraints()
            setDescriptionConstraints()
        }
        
        required init?(coder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
        
        func set(title: String, description: String){
            titleView.text = title
            descriptionView.text = description
        }
        
        func configureTitleView() {
            titleView.numberOfLines = 0
            titleView.adjustsFontSizeToFitWidth = true
        }
        
        func configureDescriptionView(){
            descriptionView.numberOfLines = 0
            descriptionView.adjustsFontSizeToFitWidth = true
        }
        
        
        func setTitleConstraints(){
            titleView.translatesAutoresizingMaskIntoConstraints = false
            titleView.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
            titleView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 12).isActive = true
            titleView.heightAnchor.constraint(equalToConstant: 80).isActive = true
            titleView.widthAnchor.constraint(equalToConstant: frame.width / 2 ).isActive = true
        }
        
        func setDescriptionConstraints(){
            descriptionView.translatesAutoresizingMaskIntoConstraints = false
            descriptionView.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
            descriptionView.leadingAnchor.constraint(equalTo: titleView.trailingAnchor, constant: 12).isActive = true
            descriptionView.heightAnchor.constraint(equalToConstant: 80).isActive = true
            descriptionView.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -12).isActive = true
        }
    
    }
    
    

    在ViewDidLoad中调用的方法 -这很管用

     // MARK: - Base Table View Set UP
        private func TableViewSetUp(){
    
            tableView?.delegate = self
            tableView?.dataSource = self
            
            tableView = UITableView(frame: .zero, style: .plain)
            tableView?.backgroundColor = .brown // Testing Only
            tableView?.rowHeight = 100
            tableView?.register(TableViewCell.self, forCellReuseIdentifier: "Cell")
            
            guard let myTableView = tableView else { return }
            view.addSubview(myTableView)
            
            // Constraints
            myTableView.translatesAutoresizingMaskIntoConstraints = false
            myTableView.topAnchor.constraint(equalTo: (collectionView?.bottomAnchor)!).isActive = true
            myTableView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
            myTableView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
            myTableView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    
            
        }
    

    我如何尝试添加手机信息

    extension LogViewController: UITableViewDelegate{
        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
            
        }
    }
    
    extension LogViewController: UITableViewDataSource {
    
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return 10
        }
    
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            
            print("IN CELLFORROWAT")
            
            let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! TableViewCell 
            cell.set(title: "BOOO", description: "aaa")
            cell.backgroundColor = .blue
            return cell
        }
    }
    
    1 回复  |  直到 6 天前
        1
  •  3
  •   Tomo Norbert    6 天前

    表格视图?。代表=自我 表格视图?。数据源=自身

    所以不是

    private func TableViewSetUp(){
        tableView?.delegate = self
        tableView?.dataSource = self
        
        tableView = UITableView(frame: .zero, style: .plain)
        tableView?.backgroundColor = .brown // Testing Only
        tableView?.rowHeight = 100
        tableView?.register(TableViewCell.self, forCellReuseIdentifier: "Cell")
    

    用这个

    private func TableViewSetUp(){
        tableView = UITableView(frame: .zero, style: .plain)
        tableView?.delegate = self
        tableView?.dataSource = self
        tableView?.backgroundColor = .brown // Testing Only
        tableView?.rowHeight = 100
        tableView?.register(TableViewCell.self, forCellReuseIdentifier: "Cell")