在静态表格视图(单元格)中实现动态表格

Posted

技术标签:

【中文标题】在静态表格视图(单元格)中实现动态表格【英文标题】:Implement a dynamic table within a static table view (cell) 【发布时间】:2016-03-08 20:45:56 【问题描述】:

所以到目前为止,我基本上已经实现了一个静态表,并且在底部我想为活动的参与者列表添加另一个动态表。在此处查看屏幕截图:

我现在的问题是,我无法为放置在最后一个静态表视图单元格中的动态表设置自己的类。您可以查看屏幕截图中红色标记的方块。我的实际计划是给动态一个自己的类,然后将参与者列表作为数组检索,并根据数组的计数设置 numberOfRowsInSection 等。

你们知道如何在静态表中实现它吗?所以基本上我如何在底部添加动态表格,包括以后无限滚动?

到目前为止,我已经尝试过这篇文章,但它并没有完全帮助我:Dynamic UITableView inside static cell 我将在下面添加我的解决方案。

您的帮助将不胜感激!

亲切的问候 马特

【问题讨论】:

Dynamic UITableView inside static cell的可能重复 【参考方案1】:

除非有真正的理由让顶部也成为表格,否则最简单的解决方案是将顶部设为表格标题视图并仅使用动态表格。

【讨论】:

谢谢你,你节省了我的时间!!【参考方案2】:

创建一个视图控制器。然后在 ViewController 中放置两个 ContainerViewController。使用嵌入为 2 个单独的 tableViewcontrollers 创建 segues。一个到静态表视图,一个到动态表视图。这样你就可以在上面有一个静态表格,在下面有一个动态表格。

【讨论】:

嘿 rMickeyD,谢谢您的回复。我找到了解决方案,你帮我发了帖子。【参考方案3】:

好的,谢谢 rMickeyD 的提示。我部分使用了它并实现了它。您可以在此处查看此屏幕截图中的结果:

除此之外,我使用 prepareToSegue 将静态表中单元格的高度设置为右侧的单元格高度的 guest.count * 44 数组。

静态表格视图的代码(左):

import UIKit
class EventDetailTableViewController: UITableViewController 

    var attendeesArrayFromDatabase = ["Kathi", "Cansin", "Tyrone", "Manuel", "Stavros", "Christoph", "Maria", "Aditya", "Kathi", "Cansin", "Tyrone", "Manuel", "Stavros", "Christoph", "Maria", "Aditya"]

    override func viewDidLoad() 
        super.viewDidLoad()
    

    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 

        if indexPath.section == 1 && indexPath.row == 0 
            let height:CGFloat = CGFloat(attendeesArrayFromDatabase.count * 44)
            return height
        
        return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
    

    // MARK: Navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
        let destViewController : EventPeopleJoinedContainerTableViewController = segue.destinationViewController as! EventPeopleJoinedContainerTableViewController

        destViewController.attendeesArray = attendeesArrayFromDatabase
    

以及动态表的正确tableview:

import UIKit
class EventPeopleJoinedContainerTableViewController: UITableViewController 

    var attendeesArray = []

    override func viewDidLoad() 
        super.viewDidLoad()

    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
    

    // MARK: - Table view data source
    override func numberOfSectionsInTableView(tableView: UITableView) -> Int 
        return 1
    

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return attendeesArray.count
    

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCellWithIdentifier("personJoined", forIndexPath: indexPath) as UITableViewCell

        //Create a label with the name of a person from array attendeesArray
        let attendeeNameLabel = UILabel(frame: CGRect(x: 70, y: 0, width: cell.frame.width, height: cell.frame.height))
        attendeeNameLabel.font = cell.textLabel?.font.fontWithSize(14.0)
        attendeeNameLabel.textColor = UIColor.darkGrayColor()
        attendeeNameLabel.text = attendeesArray[indexPath.row] as? String

        //Create a image view for the profile picture of the guest
        let attendeeImageView = UIImageView(frame: CGRect(x: 25, y: 7, width: 30, height: 30))
        attendeeImageView.layer.cornerRadius = attendeeImageView.frame.size.width/2
        attendeeImageView.layer.borderColor = UIColor.whiteColor().CGColor
        attendeeImageView.layer.borderWidth = 0.5
        attendeeImageView.clipsToBounds = true
        attendeeImageView.image = UIImage(named: "profilPicDummy")

        cell.contentView.addSubview(attendeeNameLabel)
        cell.contentView.addSubview(attendeeImageView)

        return cell
    

【讨论】:

以上是关于在静态表格视图(单元格)中实现动态表格的主要内容,如果未能解决你的问题,请参考以下文章

如何快速订购两个动态表格视图单元格?

具有动态调整单元格的可折叠表格视图

iOS - 表格视图 - 静态单元格(分组) - 更改部分标题文本颜色

具有动态高度单元格但所有单元格同时显示的 iOS 表格视图

设置表格视图单元格的动态高度

动态更改静态单元格上的节标题文本