gpt4 book ai didi

ios - 在 swift 中显示更多按钮时取消在 tableview 单元格上向左滑动

转载 作者:IT王子 更新时间:2023-10-29 05:50:10 25 4
gpt4 key购买 nike

我想知道是否有适当的方法来取消在 tableview 单元格上向左滑动,以便它向后滑动以隐藏按钮。我不太确定如何正确地说出来,大声笑。但是请看下面的 GIF。在第一个 GIF 中,按下取消按钮后我没有代码,并且按钮保持可见。

enter image description here

我唯一的想法是用这段代码重新加载单元格而我更希望它看起来像单元格向右移回原位。请参阅下面的重新加载 GIF。

enter image description here

我应该如何正确地执行此操作?请参阅下面我添加按钮的代码及其功能。

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {

let edit = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "Edit") {
(action, indexPath) in

if (indexPath == self.indexSelect) {
print("Editting Selected Cell")
} else {
print("Editting a difference cell than selected")
}

let section: Sections = self.frc.objectAtIndexPath(indexPath) as! Sections
let count: Int = self.sectionCount(section.section!)
var msg: String?
let sectionName: String = section.section!

if (count > 0) {
msg = "There are \(count) other Items using this Section currently. Editing the Section name \"\(sectionName)\" will affect them all. \n\nThis will be changed immediately!"
}

let alert = UIAlertController(title: "Edit Section Name", message: msg, preferredStyle: UIAlertControllerStyle.Alert)
let editAction = UIAlertAction(title: "Edit", style: UIAlertActionStyle.Destructive) {
UIAlertAction in

let sectionName = Util.trimSpaces(alert.textFields![0].text!)

if (sectionName != section.section) {
if (Util.checkSectionName(sectionName, moc: self.moc!) == false) {
let entityDesc = NSEntityDescription.entityForName("Sections", inManagedObjectContext: self.moc!)
let newSection: Sections = Sections(entity: entityDesc!, insertIntoManagedObjectContext: self.moc)
newSection.section = sectionName

do {
try self.moc!.save()
} catch {
fatalError("New item save failed")
}

let oldSection: Sections = section

let fetchReq = NSFetchRequest(entityName: "Catalog")
let pred = NSPredicate(format: "sections.section == %@", oldSection.section!)
fetchReq.predicate = pred

do {
let results = try self.moc!.executeFetchRequest(fetchReq)
for rec in results {
let catalog: Catalog = rec as! Catalog
catalog.sections = newSection
}

do {
try self.moc!.save()
} catch {
fatalError("Failed to Save after Delete")
}
} catch {
fatalError("Fetching Items to delete section failed")
}

self.moc!.deleteObject(oldSection)

do {
try self.moc!.save()
} catch {
fatalError("Failed to Save after Delete")
}
} else {
Util.msgAlert("Duplicate Section Name", msg: "\"\(sectionName)\" section name already exists.", curVC: self)
self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
} else {
self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
let cancel = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) {
UIAlertAction in

//self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}

alert.addAction(editAction)
alert.addAction(cancel)
alert.addTextFieldWithConfigurationHandler {
(txtFld) -> Void in

txtFld.text = section.section
txtFld.autocapitalizationType = UITextAutocapitalizationType.Words
txtFld.autocorrectionType = UITextAutocorrectionType.Default
txtFld.clearButtonMode = UITextFieldViewMode.WhileEditing
}

self.presentViewController(alert, animated: true, completion: nil)
}

edit.backgroundColor = UIColor.init(red: 84/255, green: 200/255, blue: 214/255, alpha: 1)

let delete = UITableViewRowAction(style: .Destructive, title: "Delete") {
(action, indexPath) in

let section: Sections = self.frc.objectAtIndexPath(indexPath) as! Sections
let count: Int = self.sectionCount(section.section!)

if (count > 0) {
let alert = UIAlertController(title: "Confirm Delete", message: "There are \(count) Items using this Section currently. Deleting this Section will reset them all to blank. \n\nThis can't be undone and will take affect immediately!", preferredStyle: UIAlertControllerStyle.Alert)
let cancel = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) { UIAlertAction in }
let deleteAction = UIAlertAction(title: "Delete", style: UIAlertActionStyle.Destructive) { UIAlertAction in
var blankSection: Sections?

var fetchReq = NSFetchRequest(entityName: "Sections")
var pred = NSPredicate(format: "section == %@", "")
fetchReq.predicate = pred

do {
let results = try self.moc!.executeFetchRequest(fetchReq)
blankSection = (results.first as! Sections)
} catch {
fatalError("Fetching blank section failed")
}

fetchReq = NSFetchRequest(entityName: "Catalog")
pred = NSPredicate(format: "sections.section == %@", section.section!)
fetchReq.predicate = pred

do {
let group = try self.moc!.executeFetchRequest(fetchReq)
for rec in group {
let catalog: Catalog = rec as! Catalog
catalog.sections = blankSection
}

} catch {
fatalError("Fetching Items to delete section failed")
}

self.moc!.deleteObject(section)

do {
try self.moc!.save()
} catch {
fatalError("Failed to Save after Delete")
}

if (self.sectionUpdateProtocol != nil) {
self.sectionUpdateProtocol!.sectionUpdate(self, section: blankSection!)
}

//self.navigationController!.popViewControllerAnimated(true)
}

alert.addAction(deleteAction)
alert.addAction(cancel)

self.presentViewController(alert, animated: true, completion: nil)
} else {
self.moc!.deleteObject(section)

do {
try self.moc!.save()
} catch {
fatalError("Failed to Save after Delete")
}
}

}

return [delete, edit]
}

最佳答案

只需调用:

tableView.setEditing(false, animated: true)   

关于ios - 在 swift 中显示更多按钮时取消在 tableview 单元格上向左滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37494914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com