我正在尝试创建一个视图,其顶部有一个按钮,右下方有一个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()
}