如何在没有数组的情况下在 UITableView 中显示 UITableView Cell?

How to show UITableView Cell in UITableView without array?

我有这个代码:

    class UserProfilViewController: UIViewController {
    // Outlets
    @IBOutlet weak var userProfileTableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.tabBarController?.navigationItem.title = "Profil"
    }

}

// MARK: - Table View Data Source
extension UserProfilViewController {

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "UserProfilCell", for: indexPath)
        return cell
    }



}

我在 bitbucket 中的项目:https://bitbucket.org/trifek/karta-nauka/src/master/

我在 tableview (UserProfil.storyboard) 上放置了一个 tableviewcell 单元格。我有一个表格,我想在这个单元格中显示。问题是单元格不显示。有人知道怎么解决吗?

恕我直言,首先尝试明确您的要求。如果你想显示固定单元格数,那么你可以简单地使用静态单元格。如果您的单元格是动态,即它们的数量取决于某些计算或其他逻辑,那么您可以使用动态单元格。使用动态单元格时,验证您是否已注册它(如果您使用 xib 作为单元格)并验证单元格 identifier.

根据您分享的代码,请将您的代码更改为以下。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "UserProfilCell", for: indexPath) as! UserProfilTableViewCell
    return cell
}

如有任何疑问,请告诉我。

    @Lukasz 

    Please use the below code for this.

    class UserProfileViewController: UIViewController {

        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
               setUIComponents()
        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }

        private func setUIComponents(){

            registerNibs()
        }
    }

    extension UserProfileViewController: UITableViewDelegate, UITableViewDataSource{

    internal func registerNibs(){

            tableView.register(UINib(nibName: String(describing:  UserProfileTableCell.self), bundle: Bundle.main), forCellReuseIdentifier:     kUserProfileCellReuseId)
        }

        //MARK: TableView Methods -
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

            return 5
        }

        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

            let sessionCell: UserProfileTableCell.self = tableView.dequeueReusableCell(withIdentifier: kUserProfileCellReuseId, for: indexPath) as! UserProfileTableCell.self
            cell.titleLabel.text = “TEST”
            return sessionCell
        }

        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            tableView.deselectRow(at: indexPath, animated: true)
        }
    }

class UserProfileTableCell: UITableViewCell {

//Set the "kUserProfileCellReuseId" in nib to register identifier.
let kUserProfileCellReuseId = "kUserProfileCellReuseId"

//MARK: - Override Methods
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        setUIComponents()
    }

    private func setUIComponents(){
    }
}

您永远不会声明您的视图控制器符合 UITableViewDataSourceUITableViewDelegate 协议。如果您不这样做,您将无法将视图控制器设置为数据源或 table 视图的委托。