ios - Delete a row from Core Data UITableView with custom button -


i have uitableview populated cells core data , nsfetchedresultscontroller. have custom button on custom cells, i'm planning on using delete cell. it's easy add standard swipe-to-delete, i'd rather use custom button. know how hook action button delete entry data model , delete cell uitableview? cannot find solution life of me.

edit:

this code have delete using standard swipe-to-delete. way modify work button?

if (editingstyle == uitableviewcelleditingstyledelete) {      [self.tableview beginupdates];      // delete task      task *tasktodelete = [self.fetchedresultscontroller objectatindexpath:indexpath];     nslog(@"deleting (%@)", tasktodelete.name);     [self.managedobjectcontext deleteobject:tasktodelete];     [self.managedobjectcontext save:nil];      // delete row      [self.tableview deleterowsatindexpaths:[nsarray arraywithobject:indexpath] withrowanimation:uitableviewrowanimationfade];     [self performfetch];      [self.tableview endupdates]; } 

general overview:

  1. connect button action on controller, deleterow:(id)sender;
  2. the sender button. superview, superview of superview, , on until have reference uitableviewcell. (search in loop using iskindofclass:, don't assume button 1, 2, 3 levels down.)
  3. call table view's indexpathforcell: method convert cell reference index path.
  4. use objectatindexpath: on fetched results controller object.

then delete it! if handling nsfetchedresultscontroller delegate methods take care of removing deleted row.

sample code (typed without compiler check it):

- (void)deleterow:(id)sender {     id view = [sender superview];     while (view && ![view iskindofclass:[uitableviewcell class]]) {         view = [view superview];     }     uitableviewcell *cell = view;     nsindexpath *indexpath = [self.tableview indexpathforcell:cell];     nsmanagedobject *task = [fetchedresultscontroller objectatindexpath:indexpath];     [self.managedobjectcontext deleteobject:task];     [self.managedobjectcontext save:nil]; } 

that's it. not try remove row table view. when object deleted, nsfetchedresultscontroller detect change , update table view, assuming set delegate methods described in documentation nsfetchedresultscontroller. if haven't, read documentation (just option-double-click on "nsfetchedresultscontroller" in xcode).


Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -