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

Posted

技术标签:

【中文标题】如何在没有数组的 UITableView 中显示 UITableView Cell?【英文标题】:How to show UITableView Cell in UITableView without array? 【发布时间】:2018-05-11 11:21:07 【问题描述】:

我有这个代码:

    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 单元格。我有一个表格,我想在这个单元格中显示。问题是单元格不显示。有人知道怎么解决吗?

【问题讨论】:

“我有一个表单”,是UIView吗? 是的,我有故事板 UserProfil.storyboard。在这个我有表格视图和单元格的视图。这个单元格是不可见的:( 如果是静态单元格,为什么要创建动态tableview,也可以使用静态单元格 是的,它是静态单元格 那就不要使用动态单元格 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:
    @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()
    

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于如何在没有数组的 UITableView 中显示 UITableView Cell?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITableView 中安全地使用未初始化的数组并显示一个空表

使用数组项属性值在 UITableView/UICollectionView 中显示

如何在 UITableView 中显示数组中的 x 个对象,然后在向下滚动时显示更多?

如何发送数组列表以解析和检索它并在 UItableView 中显示它?

如何从属于 UITableView 中的模型数组对象的数组中向 tableView 显示数据?

如何在 UITableView 上显示 JSON 数组