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

os8fio9y  于 2022-12-28  发布在  Swift
关注(0)|答案(3)|浏览(136)

到目前为止,我基本上已经实现了一个静态表,在最底层,我想为事件的参与者列表添加另一个动态表

我现在的问题是,我不能用自己的类来设置动态表格,这个类放在最后一个静态表格视图单元格中。你可以查看屏幕截图中红色标记的方块。我实际的计划是给予动态表格自己的类,然后以数组的形式检索参与者列表,并根据数组的计数设置numberOfRowsInSection等。
你们知道如何在静态表中实现它吗?基本上,我如何在底部添加动态表,包括以后的无限滚动?
到目前为止,我已经尝试过这个帖子,但它并没有完全帮助我:Dynamic UITableView inside static cell我将在下面添加我的解决方案。
你的帮助将不胜感激!
问候马特

flvlnr44

flvlnr441#

除非有真实的的理由让顶部也成为一个表,否则最简单的解决方案是让顶部成为一个表头视图,只使用动态表。

yzxexxkh

yzxexxkh2#

创建一个ViewController。然后将两个ContainerViewController放在ViewController中。使用embed为两个单独的tableViewcontroller创建segues。一个到静态表视图,一个到动态表视图。这样,您可以在顶部有一个静态表,在下面有一个动态表。

jtjikinw

jtjikinw3#

好的,谢谢rMickeyD的提示。我使用了它的一部分并实现了它。你可以在下面的截图中看到结果:

除此之外,我还使用prepareToSegue将静态表中单元格的高度设置为访客数组。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
    }
}

以及动态表的右表视图:

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
    }
}

相关问题