我正在创建一个事件RSVP应用程序,RSVP屏幕的设计如下 -
如图所示,存在多个标题(对于每个事件),其向用户IF显示,用户家庭中的至少一个客户被邀请到该相应事件。如果显示特定事件的标题,则会在其下方列出来宾,其中包含用户选择(或取消选择)表示他们是否参加活动的受邀嘉宾的选项(或不)。
在Stack Overflow的帮助下,我使用以下逻辑实现了一个包含多个原型单元的tableView -
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.row == 0 {
//cell 1 content
return cell
} else if indexPath.row == 1 {
//cell 2 content
return cell
} else if indexPath.row == 2 {
//cell 3 content
return cell
} ...
在实现我想要的内容时,上述逻辑存在问题。是的,indexPath.row == 0将等于“事件1”。但是,indexPath.row == 2,indexPath.row == 3,...,indexPath.row == x,将填充邀请特定事件的访客数量(如果有,则标题将被抑制)没有邀请参加活动的客人)。问题是,我将使用什么逻辑来显示“事件2”标题(即indexPath.row == x + 1)?
如果有任何人可以指出的任何特定教程或解决方案,我们将不胜感激。谢谢。
答案 0 :(得分:1)
您需要创建一个包含事件ID,EventName和GuestAubArray(命名为guest)的Dictionary的数组(名为Sections)。 您必须使用numberOfSectionsInTableView函数来设置标头计数。
partitioned = numpy.partition(l, k)
# The subarray partitioned[:k] now contains the k smallest elements.
将特定部分的单元格数设置为
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// Return the number of sections.
return self.sections.count
}
您可以在StoryBoard中为自定义HeaderView创建一个TableViewCell,并从
中使用它override func tableView(tableView: UITableView,
numberOfRowsInSection section: Int)
-> Int {
return self.sections[section].guests.count
}
对于子节细胞使用,
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerCell = tableView.dequeueReusableCellWithIdentifier("HeaderCell") as! CustomHeaderCell
headerCell.backgroundColor = UIColor.cyanColor()
headerCell.headerLabel.text = self.sections[section].eventName
return headerCell
}
阅读本文以获取更多帮助https://www.ralfebert.de/tutorials/ios-swift-uitableviewcontroller/
答案 1 :(得分:0)
使用事件ID和值数组作为键来创建字典。
您的tableView将使用部分。
部分数量将是事件数量(字典的键数)。
每个部分中的行数将是guest虚拟机数组的大小。
像这样celForRowAtIndex
将很容易实现。