SWIFT:创建具有不同原型样式的tableView

时间:2015-11-10 04:42:31

标签: ios swift xcode7

我正在创建一个事件RSVP应用程序,RSVP屏幕的设计如下 -

enter image description here

如图所示,存在多个标题(对于每个事件),其向用户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)?

如果有任何人可以指出的任何特定教程或解决方案,我们将不胜感激。谢谢。

2 个答案:

答案 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将很容易实现。