UITableViewController将不同的单元格插入不同的部分

时间:2016-12-21 10:04:20

标签: swift uitableview

我有一个TableViewController,包含3个带有自己标题的部分。 现在我想在插入任何单元格之前,检查属性然后将单元格添加到不同的部分。

        Stopwatch stp = new Stopwatch();
        stp.Start();
        for (int i = 0; i < 1000000; i++)
        {
            sb = Test("_my_string_121_a_");
        }
        stp.Stop();
        long timeConsumed= stp.ElapsedMilliseconds;

你能看到评论,有没有办法做到这一点? 非常感谢你

3 个答案:

答案 0 :(得分:0)

您可以创建模型并首先为数据源方法中的每个部分和行传递空计数数组。 然后初始化计数并填充数组,然后重新加载表视图。 我希望你也知道有numberOfSections方法。

答案 1 :(得分:0)

我认为此代码可以帮助您:

let arr = [5,2,7,10,2]
override func viewDidLoad() {
    super.viewDidLoad()
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 5
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return arr[section]
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("celldata", forIndexPath: indexPath)

    cell.textLabel?.text = "section \(indexPath.section)"
    cell.detailTextLabel?.text = "Rows \(indexPath.row)"

    return cell
}
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let view = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: 20))
    let lbl = UILabel(frame: CGRect(x: 5, y: 5, width: self.tableView.frame.width, height: 15))
    lbl.text = "\(section)"
    view.backgroundColor = UIColor.grayColor()
    view.addSubview(lbl)
    return view
}

答案 2 :(得分:-2)

你可以这样试试

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


    if(indexPath.section == 0){
        let cellIdentifier = "TasksTableViewCell"

        guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? TasksTableViewCell  else {
            fatalError("The dequeued cell is not an instance of TasksTableViewCell.")
        }

     // Fetches the appropriate task for the data source layout.

        let task = tasks[indexPath.row]
        cell.nameLabel.text = task.name
        cell.photoImageView.image = task.photo
        cell.timeControl.text = task.lengthDisplay.replacingOccurrences(of: "Length: ", with: "")

        return cell
    }
    else if(indexPath.section == 1)
        let cellIdentifier = "TasksTableViewCell1"

        guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? TasksTableViewCell1  else {
            fatalError("The dequeued cell is not an instance of TasksTableViewCell.")
        }

     // Fetches the appropriate task for the data source layout.
        let task = tasks[indexPath.row]
        cell.nameLabel.text = task.name
        cell.photoImageView.image = task.photo
        cell.timeControl.text = task.lengthDisplay.replacingOccurrences(of: "Length: ", with: "")

        return cell
    }
}