[iPhone SDK] UITableView - setEditable Tutorial

Discussion in 'Mac Programming' started by zcarter, Mar 22, 2008.

  1. zcarter macrumors member

    Apr 21, 2007
    Hey guys,

    I have just uploaded a UITableView - setEditable Tutorial for the iPhone SDK.
    You can view it at the link below. This shows you how to get your rows in editing view to be able to delete them. It also shows you how to add/remove buttons in the upper right hand corner of the navigation view.

    Let me know what you think!

    - Zac

  2. lucasgladding macrumors 6502

    Feb 16, 2007
    Waterloo, Ontario
    Not sure if you have seen this yet, but you may want to check out the following function.

    - (UIButton *)editButton
    There are other reasons to configure the button manually for the tutorial, but the editButton method is definitely worth mentioning. My apologies if this is discussed in the tutorial - I haven't had a chance to watch it in full yet.

    Thanks for your hard work so far with the site.
  3. zcarter thread starter macrumors member

    Apr 21, 2007
    Thanks man!


    Haha, Still learning all the cool features I guess.

    Thanks for the heads up!

    Hey, would you be interested in making some home-made tutorials for that site?

    Email me at tutorials@iphonedevcentral.org

    Seems like you know what you're talking about..
  4. Buschmaster macrumors 65816


    Feb 12, 2006
    Thanks for the helpful tutorials!

    Perhaps I'll write some VERY beginner ones, I feel like I can struggle through the better stuff right now, but very beginner can be a good thing for when you're just learning.
  5. zcarter thread starter macrumors member

    Apr 21, 2007

    No problem man! This is why Im making iphonedevcentral.org to begin with. So everyone can share all their tutorials and I can just make this huge database of them. I will be posting tutorials of written and video tutorials so if you wanna submit your own, please send them to tutorials@iphonedevcentral.org


    Any requests for tutorials?

    - Zac
  6. elbirth macrumors 65816

    Jan 19, 2006
    North Carolina, US
    I've checked out this one and the other tutorial you did for the hello world app, and I have to say they're nice resources for helping to understand some stuff.

    Maybe you'll do this on your site, but do you know if there are any current sites or other resources available that do video tutorials for actually teaching you programming in Xcode from the start? (not specifically for the iPhone). My only programming experience was a course I took in college for Java, but the professor was horrible, and the TAs didn't want to actually provide help other than telling you to go read the course material, so I ended up dropping it and didn't get much out of it.

    It helps me to have someone actually explaining what's going on instead of trying to find a book to read, but I haven't seen any good tutorials that are truly for beginners and doesn't assume you have any programming knowledge.
  7. zcarter thread starter macrumors member

    Apr 21, 2007

    We will have beginners videos explaining what Object Oriented programming is, and how it works. We will start from the very beginning. This is a variable, etc, this is a for loop, this is a while loop, etc. etc.

    Hopefully it can get some people started. If you know anything and would like to contribute let me know.

    - Zac
  8. Manty macrumors member

    Mar 18, 2008
    Lisbon, Portugal
    Thanks for the tutorial, i've seen the 3 and it's helping me to get some basic knowledge until june. It's not my first time learning a new language but i have to say that video tutorials help a lot.
    So, i can't help with the objective C yet but if you need any help with the site or something, and maybe making video tutorials of the text ones (sry to repeat myself but i rly think its easier).

    Looking forward for the next tutorial,
  9. Monkaaay macrumors 6502


    Jun 19, 2006
    Richmond, VA
    Great stuff. I hope you're able to track the downloads of your tutorials! :)
  10. Buschmaster macrumors 65816


    Feb 12, 2006
    As far as requests, it would be nice to see (on top of the hello world one) one on each of the basic ways to handle graphics. CG, UIKit, etc. That way you can get your feet wet with each of those types.
  11. SqueegyX macrumors regular

    Mar 24, 2008
    Very nice! Thanks for this. This and the Hello World you did are really helping me get this down.

    I have a question regarding code consistency and conventions. I am new to objective-C but most code I see has method names that start with lower case, and are camelCased with no underscores. In your tutorials I have seen camelcased methods, camel cased that start with a capital letter, and lowercase underscored method names. Are there common conventions for that or is it just your preference? I realize the compiler doesn't care, but most languages have a "Best Practice" around these matters.

    Also, I managed to get the delete button to actually work. It took some digging thorugh the docs to figure out how what methods get called when a cell is confirmed to be deleted, but the method you mention at the end is only half the story. You need the delegate method:

    - (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    Which gets called on the master view when the delete button is hit. I added a 3 line method to MasterView and it deletes items like a charm!

    - (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
      [appController.masterList removeObjectAtIndex:[indexPath indexAtPosition:1]];
      [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
      [self buttonPushed];
    The first line of the method removes the item from the array that feeds the table. So you update your data source BEFORE you update your view. The NSIndexPath class can keep track of your position in nested table views and table view sections. [indexPath indexAtPosition:1] returns the index, as an int, of the table cell that had its delete button tapped.

    The next line updates the table view. It expects an array of NSIndexPath objects, but we only have 1, so we make a little array of NSIndexPath objects right inline. This removes the table row from the view, and animates it all pretty.

    The last line resets our button. After each deletion the table view automatically exits edit mode. So without this last line, you would still have a blue "Done" button. So after the deletion, you have to simulate hitting the "Done" button by calling the method that handles tapping that button.

    Just figured some people might like to know how to tackle that piece of it, before the next video.

    Keep it up, man. you rock.
  12. lucasgladding macrumors 6502

    Feb 16, 2007
    Waterloo, Ontario
    There is an excellent guide on cocoadevcentral that may be worth checking out. It is pretty old, but will give you the general idea. See:


    Regarding removing rows from a table view, make sure you read the release notes in the SDK documentation. Exiting edit mode on removal is a know bug. I don't think the delegate method will be required in the final release. I would think the data source is really meant for the manipulation of the collection.

    BTW: cocoadevcentral is an excellent resource for anyone new to Objective-C.
  13. Duke Leto macrumors regular

    Mar 17, 2008
    In addition to the post above with the three line- method.. I devised a way to make a new array without that line... there is probably a method to do this but I did it oldskool lol.

      NSMutableArray *tempList = [[NSMutableArray alloc] init];
      for(int i=0; i<[indexPath indexAtPosition:1]; i++) {
    	[tempList addObject:[appController.masterList objectAtIndex:i]];
      for(int j=[indexPath indexAtPosition:1]+1; j<[appController.masterList count]; j++) {
    	[tempList addObject:[appController.masterList objectAtIndex:j]];
    This just makes an array, then puts in the info you need from the other Array. I thought I should put this out to help, especially since everyone around here has been kind in putting up with me.
  14. MacBuddySupport macrumors member


    Nov 19, 2007
    Populate a NSTableView

    Ok I have got everything their needs to be for a UITableView. Could some one please tell me how to populate the Table view from the interface and not from code. in other words could some one please help me populate the table view? I have tried this method

    contentArray [[NSContentArraywithManagedObjects:mad:"One", @"Two", nill]
    This way does not seem to work. Actualy, any way with an Array doesn't work.

    Please help me.

    Also could some one please tell me the line of code that saves the Applications state on the Exit?

    :confused: :confused: :confused: :confused: :confused:

Share This Page