Swift,XCode6:在uitableview中添加和删除新的部分

时间:2015-08-31 14:35:38

标签: ios swift uitableview ios8 xcode6

我正在尝试创建一个视图,其顶部有一个按钮,右下方有一个uitableview。 uitableview默认包含3行的部分。我希望实现的是,每当按下按钮时,我希望添加一个包含4行的新部分。每个新添加的部分的第一行应删除有关选择的部分。当按下顶部按钮时,将部分附加到现有部分的底部。但是,它们可以从中间删除。

我在下面发布了我的代码。部分正在加入。但是,删除不正确。如果我选择新添加的部分的第0行,则没有任何反应。但是,如果我选择第0行然后选择同一部分的第1行,该部分将被删除。我也不确定我添加新的部分逻辑。我是iOS开发的新手,请提前帮助我做到这一点,谢谢!

@IBOutlet weak var tableView: UITableView!

var retailProduct: RetailProduct?

let mandatoryVariants = 1

var additionalVariants = 0


    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = UITableViewCell()
    if indexPath.section == 0 {
        switch indexPath.row {
        case 0:
            var variantImagesCell = tableView.dequeueReusableCellWithIdentifier("variantImagesCell") as! VariantImagesCell
            cell = variantImagesCell
            break
        case 1:
            var variantColorCell = tableView.dequeueReusableCellWithIdentifier("addColorCell") as! AddColorCell
            variantColorCell.colorLabel.text = "Color"
            if let color = retailProduct?.colorVariants[0].color {
                variantColorCell.colorName.text = color.description
            } else {
                variantColorCell.colorName.text = "Select Color"
            }
            cell = variantColorCell
            break
        case 2:
            var variantQuantityCell = tableView.dequeueReusableCellWithIdentifier("addQuantityCell") as! AddQuantityCell
            variantQuantityCell.addQuantityLabel.text = "Size and Quantity"
            variantQuantityCell.quantity.text = String(0)
            cell = variantQuantityCell
            break
        default:
            break
        }
    } else {
        switch indexPath.row {
        case 0:
            var deleteVariantCell = tableView.dequeueReusableCellWithIdentifier("deleteCell") as! DeleteCell
            cell = deleteVariantCell
            break
        case 1:
            var variantImagesCell = tableView.dequeueReusableCellWithIdentifier("variantImagesCell") as! VariantImagesCell
            cell = variantImagesCell
            break
        case 2:
            var variantColorCell = tableView.dequeueReusableCellWithIdentifier("addColorCell") as! AddColorCell
            variantColorCell.colorLabel.text = "Color"
            if let color = retailProduct?.colorVariants[0].color {
                variantColorCell.colorName.text = color.description
            } else {
                variantColorCell.colorName.text = "Select Color"
            }
            cell = variantColorCell
            break
        case 3:
            var variantQuantityCell = tableView.dequeueReusableCellWithIdentifier("addQuantityCell") as! AddQuantityCell
            variantQuantityCell.addQuantityLabel.text = "Size and Quantity"
            variantQuantityCell.quantity.text = String(0)
            cell = variantQuantityCell
            break
        default:
            break
        }
    }
    //println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ " + String(indexPath.section) + " " + String(indexPath.row))
    return cell
}

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
    println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ " + String(indexPath.section) + " " + String(indexPath.row))
    if (indexPath.section > 0) && (indexPath.row == 0) {
        additionalVariants--
        let indexSet = NSMutableIndexSet()
        indexSet.addIndex(indexPath.section)
        self.tableView.deleteSections(indexSet, withRowAnimation: UITableViewRowAnimation.Automatic)
    }
}
@IBAction func addColorVariants(sender: AnyObject) {
    additionalVariants++
    let indexSet = NSMutableIndexSet()
    indexSet.addIndex(additionalVariants)
    //self.tableView.insertSections(NSIndexSet(indexesInRange: NSMakeRange(1, 5)), withRowAnimation: UITableViewRowAnimation.Automatic)
    self.tableView.beginUpdates()
    self.tableView.insertSections(indexSet, withRowAnimation: UITableViewRowAnimation.Automatic)
    self.tableView.endUpdates()
    //self.tableView.reloadSections(NSIndexSet(index: 0), withRowAnimation: UITableViewRowAnimation.Automatic)
    //self.tableView.reloadData()
}

0 个答案:

没有答案