Change swatch color to remove background in Swift

I am trying to change the background color of a scroll button to delete in my table view. I looked at some examples of Objective-C, but I could not translate them into Swift.

This is my code at the moment:

var cellDeleteBackground = UIView() cellDeleteBackground.backgroundColor = UIColor.greenColor() cell.editingAccessoryView = cellDeleteBackground 

I have it in cellForRowAtIndexPath, but at the moment it is crashing with the error "terminates with an uncaught exception of type NSException"

Can this code interfere?

  override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { if tableView == self.searchDisplayController?.searchResultsTableView { return false } else { return true } } override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { if (editingStyle == UITableViewCellEditingStyle.Delete) { if tableView == self.searchDisplayController?.searchResultsTableView { UITableViewCellEditingStyle.None } else { var valueToRemove: AnyObject! = unformatted.objectAtIndex(indexPath.row) if images.objectAtIndex(indexPath.row) as NSObject == 0 { totalSpendingsCounter = totalSpendingsCounter - Double(valueToRemove as NSNumber) NSUserDefaults.standardUserDefaults().setDouble(totalSpendingsCounter, forKey: "spendingsCounter") } else if images.objectAtIndex(indexPath.row) as NSObject == 1 { totalCreditCounter = totalCreditCounter - Double(valueToRemove as NSNumber) NSUserDefaults.standardUserDefaults().setDouble(totalCreditCounter, forKey: "creditCounter") } currencyDouble = NSUserDefaults.standardUserDefaults().doubleForKey("currencyCounter") currentBudgetCalculation = currencyDouble + totalCreditCounter - totalSpendingsCounter newTransactionEntered = true var formatter = NSNumberFormatter() formatter.numberStyle = .CurrencyStyle formatter.locale = NSLocale.currentLocale() // This is the default var formattedNumberCurrent = formatter.stringFromNumber(currentBudgetCalculation) var defaults = NSUserDefaults(suiteName: "group.AffordIt") defaults.setObject(formattedNumberCurrent, forKey: "currentBudgetWidget") defaults.setObject(newTransactionEntered, forKey: "new") values.removeObjectAtIndex(indexPath.row) images.removeObjectAtIndex(indexPath.row) names.removeObjectAtIndex(indexPath.row) dates.removeObjectAtIndex(indexPath.row) unformatted.removeObjectAtIndex(indexPath.row) notes.removeObjectAtIndex(indexPath.row) NSUserDefaults.standardUserDefaults().setObject(names, forKey: "names") NSUserDefaults.standardUserDefaults().setObject(values, forKey: "values") NSUserDefaults.standardUserDefaults().setObject(dates, forKey: "dates") NSUserDefaults.standardUserDefaults().setObject(unformatted, forKey: "unformatted") NSUserDefaults.standardUserDefaults().setObject(images, forKey: "images") NSUserDefaults.standardUserDefaults().setObject(notes, forKey: "notes") tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) } } } 
+5
source share
2 answers

Here's how you can set up deleting deleted files in iOS8:

 func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? { var deleteButton = UITableViewRowAction(style: .Default, title: "Delete", handler: { (action, indexPath) in self.tableView.dataSource?.tableView?( self.tableView, commitEditingStyle: .Delete, forRowAtIndexPath: indexPath ) return }) deleteButton.backgroundColor = UIColor.blackColor() return [deleteButton] } 
+8
source

Below is the updated code for Swift 4, Xcode 9:

 func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { let deleteButton = UITableViewRowAction(style: .default, title: "Delete") { (action, indexPath) in self.tableView.dataSource?.tableView!(self.tableView, commit: .delete, forRowAt: indexPath) return } deleteButton.backgroundColor = UIColor.black return [deleteButton] } 
+2
source

Source: https://habr.com/ru/post/1204554/


All Articles