如何在表视图中列出数据

时间:2018-11-16 04:26:24

标签: ios uitableview

这是屏幕截图。据此如何在表视图中列出数据:

image

我已经有如下代码了。

func numberOfSections(in tableView: UITableView) -> Int {
      return questionViewModel.numberOfSections()
     }
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 100
     } func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let identifier = "HeaderCell"
       var headercell: questionheader! = tableView.dequeueReusableCell(withIdentifier: identifier) as? questionheader
        if headercell == nil {
            tableView.register(UINib(nibName: "questionheader", bundle: nil), forCellReuseIdentifier: identifier)
            headercell = tableView.dequeueReusableCell(withIdentifier: identifier) as? NH_questionheader
        }     headercell.setReviewData(reviews:questionViewModel.titleForHeaderInSection(atsection:section))
            headercell.isUserInteractionEnabled = false
        return headercell

    }
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
         return questionViewModel.numberOfRowsIn(section: section)
     }

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        let model = questionViewModel.titleForHeaderInSection(atsection: indexPath.section)
        print(model.answerType)
       print(model.answerType?.rawValue)
        let c = model.answerType
        return c!.cellType().getHeight()
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         let model = questionViewModel.titleForHeaderInSection(atsection: indexPath.section)
            print(model.answerType)
            print(model.answerType?.rawValue)
            let c = model.answerType
            let cellClass = c?.cellType().getClass()
            print(cellClass)
            let cell = tableView.dequeueReusableCell(withIdentifier: (cellClass?.cellReuseIdentifier())!, for: indexPath) as! BaseCell
            print(cell)
         cell.selectionStyle = .none
 let optionModel = questionViewModel.datafordisplay(atindex: indexPath)
          cell.setOptions(Options1: optionModel)
         cell.delegate = self
        if optionModel.isSelected!
                    {
                    print(optionModel.isSelected)
                    cell.setOptions1(OptionsSelected:optionModel)
        }
         else {
                    print(optionModel.isSelected)
                    cell.setOptions1(OptionsisSelected:optionModel)
         }
        cell.type = c?.cellType()
         print(cell.type)
       else if cell.type == .radiotype{
            cell.selectionStyle = .none
        }
       return cell
   }

这是我的代码。但是据此,我将得到如下屏幕截图所示的输出。

This is the screen shot

实际上,最初我需要将节标题显示为:-请介绍一下

在那之后有小节。小节问题标题如下:-1。知识2.友好与否

然后在小节中显示选项。如何实施?

2 个答案:

答案 0 :(得分:0)

下面的示例可能会帮助您。

  let sections = [ // All sections
        [ // Sports section
            ["Baseball", "Softball", "Cricket"], // Bat-and-Ball sub-section
            ["Field Hockey", "Ice Hockey", "Roller Hockey"] // Hockey subsection
        ], [ // Engineering section
            ["Software Engineer", "Electrical Engineer"] // Computer Science subsection
        ]
    ]


    func numberOfSections(in tableView: UITableView) -> Int {
        return sections.count
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        let sectionItems = sections[section]
        var numberOfRows: Int = sectionItems.count // For second level section headers
        for rowItems: [Any] in sectionItems as? [[Any]] ?? [] {
            numberOfRows += rowItems.count // For actual table rows
        }
        return numberOfRows
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        var sectionItems = sections[indexPath.section]
        var sectionHeaders = self.sectionHeaders[indexPath.section]
        let itemAndSubsectionIndex: IndexPath? = computeItemAndSubsectionIndex(for: indexPath)
        let subsectionIndex = Int(itemAndSubsectionIndex?.section ?? 0)
        let itemIndex: Int? = itemAndSubsectionIndex?.row

        if (itemIndex ?? 0) < 0 {
            // Section header
            let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "SECTION_HEADER_CELL", for: indexPath)
            cell.textLabel?.text = sectionHeaders[subsectionIndex] as? String
            return cell
        }
        else{
            let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "ROW_CONTENT_CELL", for: indexPath)
            cell.textLabel?.text = sectionItems[subsectionIndex][itemIndex ?? 0] as? String
            return cell
        }
    }
    func computeItemAndSubsectionIndex(for indexPath: IndexPath?) -> IndexPath? {
        var sectionItems = sections[Int(indexPath?.section ?? 0)]
        var itemIndex: Int? = indexPath?.row
        var subsectionIndex: Int = 0
        for i in 0..<sectionItems.count {
            // First row for each section item is header
            itemIndex = (itemIndex ?? 0) - 1
            // Check if the item index is within this subsection's items
            let subsectionItems = sectionItems[i] as? [Any]
            if (itemIndex ?? 0) < Int(subsectionItems?.count ?? 0) {
                subsectionIndex = i
                break
            } else {
                itemIndex = itemIndex! - (subsectionItems?.count)!
            }
        }
        return IndexPath(row: itemIndex ?? 0, section: subsectionIndex)
    }

对于目标C,您可以关注URL http://sapandiwakar.in/nested-sections-in-uitableview/

答案 1 :(得分:0)

您可以在表格上方以UILabel的形式显示“请告诉我们”。