所以基本上我到目前为止已经实现了一个静态表,并且在底部我想为事件的参与者列表添加另一个动态表。看看这里的截图:
我现在的问题是,我无法为最后一个静态表视图单元格中放置的动态表设置自己的类。您可以在屏幕截图中查看红色标记的方块。我的实际计划是给动态一个自己的类,然后将参与者列表作为数组检索,并根据数组的计数等设置numberOfRowsInSection。
你们是否知道我如何在静态表中实现它?所以我基本上如何在底部添加动态表,包括后来的无限滚动?
到目前为止,我已尝试过这篇文章,但它并没有完全帮助我:Dynamic UITableView inside static cell 我将在下面添加我的解决方案。
你的帮助会非常感激!
亲切的问候 马特
答案 0 :(得分:2)
除非有一个真正的理由让顶部成为一个表,所以最简单的解决方案是使顶部成为表头视图并使用动态表。
答案 1 :(得分:1)
创建一个ViewController。然后将两个ContainerViewControllers放在ViewController中。使用embed为2个单独的tableViewcontrollers创建segues。一个是静态tableview,另一个是动态tableview。这样,您可以在顶部放置一个静态表,在下面放置一个动态表。
答案 2 :(得分:0)
好的,谢谢rMickeyD的提示。我部分地使用它并实现它。你可以在这里看到这个截图的结果:
除此之外,我在静态表格中设置了单元格的高度,并将prepareToSegue设置为来自右侧单元格高度的guests.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
}
}