├── Classes ├── DetailViewController.h ├── DetailViewController.m ├── EditableTableViewCell.h ├── EditableTableViewCell.m ├── EditableTableViewCellDelegate.h ├── EditableTableViewCellsAppDelegate.h ├── EditableTableViewCellsAppDelegate.m ├── JFTextViewNoInset.h ├── JFTextViewNoInset.m ├── RootViewController.h └── RootViewController.m ├── DetailView.xib ├── EditableTableViewCells-Info.plist ├── EditableTableViewCells.xcodeproj ├── jacquesf.pbxuser └── project.pbxproj ├── EditableTableViewCells_Prefix.pch ├── MainWindow.xib └── main.m /Classes/DetailViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DetailViewController.h 3 | // EditableTableViewCells 4 | // 5 | // Created by Jacques Fortier on 9/19/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DetailViewController : UIViewController { 12 | 13 | UIPopoverController *popoverController; 14 | UIToolbar *toolbar; 15 | 16 | id detailItem; 17 | UILabel *detailDescriptionLabel; 18 | } 19 | 20 | @property (nonatomic, retain) IBOutlet UIToolbar *toolbar; 21 | 22 | @property (nonatomic, retain) id detailItem; 23 | @property (nonatomic, retain) IBOutlet UILabel *detailDescriptionLabel; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Classes/DetailViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // DetailViewController.m 3 | // EditableTableViewCells 4 | // 5 | // Created by Jacques Fortier on 9/19/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "DetailViewController.h" 10 | #import "RootViewController.h" 11 | 12 | 13 | @interface DetailViewController () 14 | @property (nonatomic, retain) UIPopoverController *popoverController; 15 | - (void)configureView; 16 | @end 17 | 18 | 19 | 20 | @implementation DetailViewController 21 | 22 | @synthesize toolbar, popoverController, detailItem, detailDescriptionLabel; 23 | 24 | #pragma mark - 25 | #pragma mark Managing the detail item 26 | 27 | /* 28 | When setting the detail item, update the view and dismiss the popover controller if it's showing. 29 | */ 30 | - (void)setDetailItem:(id)newDetailItem { 31 | if (detailItem != newDetailItem) { 32 | [detailItem release]; 33 | detailItem = [newDetailItem retain]; 34 | 35 | // Update the view. 36 | [self configureView]; 37 | } 38 | 39 | if (popoverController != nil) { 40 | [popoverController dismissPopoverAnimated:YES]; 41 | } 42 | } 43 | 44 | 45 | - (void)configureView { 46 | // Update the user interface for the detail item. 47 | detailDescriptionLabel.text = [detailItem description]; 48 | } 49 | 50 | 51 | #pragma mark - 52 | #pragma mark Split view support 53 | 54 | - (void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc { 55 | 56 | barButtonItem.title = @"Root List"; 57 | NSMutableArray *items = [[toolbar items] mutableCopy]; 58 | [items insertObject:barButtonItem atIndex:0]; 59 | [toolbar setItems:items animated:YES]; 60 | [items release]; 61 | self.popoverController = pc; 62 | } 63 | 64 | 65 | // Called when the view is shown again in the split view, invalidating the button and popover controller. 66 | - (void)splitViewController: (UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem { 67 | 68 | NSMutableArray *items = [[toolbar items] mutableCopy]; 69 | [items removeObjectAtIndex:0]; 70 | [toolbar setItems:items animated:YES]; 71 | [items release]; 72 | self.popoverController = nil; 73 | } 74 | 75 | 76 | #pragma mark - 77 | #pragma mark Rotation support 78 | 79 | // Ensure that the view controller supports rotation and that the split view can therefore show in both portrait and landscape. 80 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 81 | return UIInterfaceOrientationIsLandscape(interfaceOrientation); 82 | } 83 | 84 | 85 | #pragma mark - 86 | #pragma mark View lifecycle 87 | 88 | /* 89 | // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 90 | - (void)viewDidLoad { 91 | [super viewDidLoad]; 92 | } 93 | */ 94 | 95 | /* 96 | - (void)viewWillAppear:(BOOL)animated { 97 | [super viewWillAppear:animated]; 98 | } 99 | */ 100 | /* 101 | - (void)viewDidAppear:(BOOL)animated { 102 | [super viewDidAppear:animated]; 103 | } 104 | */ 105 | /* 106 | - (void)viewWillDisappear:(BOOL)animated { 107 | [super viewWillDisappear:animated]; 108 | } 109 | */ 110 | /* 111 | - (void)viewDidDisappear:(BOOL)animated { 112 | [super viewDidDisappear:animated]; 113 | } 114 | */ 115 | 116 | - (void)viewDidUnload { 117 | // Release any retained subviews of the main view. 118 | // e.g. self.myOutlet = nil; 119 | self.popoverController = nil; 120 | } 121 | 122 | 123 | #pragma mark - 124 | #pragma mark Memory management 125 | 126 | /* 127 | - (void)didReceiveMemoryWarning { 128 | // Releases the view if it doesn't have a superview. 129 | [super didReceiveMemoryWarning]; 130 | 131 | // Release any cached data, images, etc that aren't in use. 132 | } 133 | */ 134 | 135 | - (void)dealloc { 136 | [popoverController release]; 137 | [toolbar release]; 138 | 139 | [detailItem release]; 140 | [detailDescriptionLabel release]; 141 | [super dealloc]; 142 | } 143 | 144 | @end 145 | -------------------------------------------------------------------------------- /Classes/EditableTableViewCell.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "EditableTableViewCellDelegate.h" 3 | 4 | @interface EditableTableViewCell : UITableViewCell { 5 | } 6 | 7 | @property(nonatomic, assign) id delegate; 8 | @property(nonatomic, readonly) UITextView *textView; 9 | @property(nonatomic, retain) NSMutableString *text; 10 | 11 | + (UITextView *)dummyTextView; 12 | + (CGFloat)heightForText:(NSString *)text; 13 | 14 | - (CGFloat)suggestedHeight; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/EditableTableViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // IngredientTableViewCell.m 3 | // Recipe Box 4 | // 5 | // Created by Jacques Fortier on 9/12/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "EditableTableViewCell.h" 10 | #import "JFTextViewNoInset.h" 11 | 12 | static const CGFloat kTextViewWidth = 320; 13 | 14 | #define kFontSize ([UIFont systemFontSize]) 15 | 16 | static const CGFloat kTextViewInset = 31; 17 | static const CGFloat kTextViewVerticalPadding = 15; 18 | static const CGFloat kTopPadding = 6; 19 | static const CGFloat kBottomPadding = 6; 20 | 21 | static UIFont *textViewFont; 22 | static UITextView *dummyTextView; 23 | 24 | @implementation EditableTableViewCell 25 | 26 | @synthesize delegate; 27 | @synthesize textView; 28 | @synthesize text; 29 | 30 | + (UITextView *)createTextView { 31 | UITextView *newTextView = [[JFTextViewNoInset alloc] initWithFrame:CGRectZero]; 32 | newTextView.font = textViewFont; 33 | newTextView.backgroundColor = [UIColor whiteColor]; 34 | newTextView.opaque = YES; 35 | newTextView.scrollEnabled = NO; 36 | newTextView.showsVerticalScrollIndicator = NO; 37 | newTextView.showsHorizontalScrollIndicator = NO; 38 | newTextView.contentInset = UIEdgeInsetsZero; 39 | 40 | return newTextView; 41 | } 42 | 43 | + (UITextView *)dummyTextView { 44 | return dummyTextView; 45 | } 46 | 47 | 48 | + (CGFloat)heightForText:(NSString *)text { 49 | if (text == nil || text.length == 0) { 50 | text = @"Xy"; 51 | } 52 | 53 | dummyTextView.text = text; 54 | 55 | CGSize textSize = dummyTextView.contentSize; 56 | 57 | return textSize.height + kBottomPadding + kTopPadding - 1; 58 | } 59 | 60 | 61 | + (void)initialize { 62 | textViewFont = [[UIFont systemFontOfSize:kFontSize] retain]; 63 | dummyTextView = [EditableTableViewCell createTextView]; 64 | dummyTextView.alpha = 0.0; 65 | dummyTextView.frame = CGRectMake(0, 0, kTextViewWidth, 500); 66 | } 67 | 68 | 69 | - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 70 | if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) { 71 | textView = [EditableTableViewCell createTextView]; 72 | textView.delegate = self; 73 | [self.contentView addSubview:textView]; 74 | } 75 | return self; 76 | } 77 | 78 | 79 | - (void)layoutSubviews { 80 | [super layoutSubviews]; 81 | 82 | CGRect contentRect = self.contentView.bounds; 83 | 84 | contentRect.origin.y += kTopPadding; 85 | contentRect.size.height -= kTopPadding + kBottomPadding; 86 | 87 | textView.frame = contentRect; 88 | textView.contentOffset = CGPointZero; 89 | 90 | } 91 | 92 | 93 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 94 | 95 | [super setSelected:selected animated:animated]; 96 | 97 | // Configure the view for the selected state 98 | } 99 | 100 | 101 | - (void)setText:(NSMutableString *)newText { 102 | if (newText != text) { 103 | [text release]; 104 | text = [newText retain]; 105 | textView.text = newText; 106 | NSLog(@"New height: %f", textView.contentSize.height); 107 | } 108 | } 109 | 110 | 111 | #pragma mark - 112 | #pragma mark UITextView delegate 113 | 114 | 115 | - (void) textViewDidBeginEditing:(UITextView *)theTextView { 116 | if ([delegate respondsToSelector:@selector(editableTableViewCellDidBeginEditing:)]) { 117 | [delegate editableTableViewCellDidBeginEditing:self]; 118 | } 119 | } 120 | 121 | 122 | - (void)textViewDidEndEditing:(UITextView *)theTextView { 123 | [text setString:theTextView.text]; 124 | 125 | if ([delegate respondsToSelector:@selector(editableTableViewCellDidEndEditing:)]) { 126 | [delegate editableTableViewCellDidEndEditing:self]; 127 | } 128 | } 129 | 130 | 131 | - (void)textViewDidChange:(UITextView *)theTextView { 132 | CGFloat suggested = [self suggestedHeight]; 133 | 134 | if (fabs(suggested - self.frame.size.height) > 0.01) { 135 | NSLog(@"Difference requires change"); 136 | if ([delegate respondsToSelector:@selector(editableTableViewCell:heightChangedTo:)]) { 137 | [delegate editableTableViewCell:self heightChangedTo:suggested]; 138 | } 139 | } 140 | } 141 | 142 | 143 | - (CGFloat)suggestedHeight { 144 | return textView.contentSize.height + kTopPadding + kBottomPadding - 1; 145 | } 146 | 147 | #pragma mark - 148 | #pragma mark Memory management 149 | 150 | - (void)dealloc { 151 | [textView release], textView = nil; 152 | [super dealloc]; 153 | } 154 | 155 | 156 | @end 157 | -------------------------------------------------------------------------------- /Classes/EditableTableViewCellDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @class EditableTableViewCell; 4 | 5 | @protocol EditableTableViewCellDelegate 6 | 7 | - (void)editableTableViewCellDidBeginEditing:(EditableTableViewCell *)editableTableViewCell; 8 | - (void)editableTableViewCellDidEndEditing:(EditableTableViewCell *)editableTableViewCell; 9 | - (void)editableTableViewCell:(EditableTableViewCell *)editableTableViewCell heightChangedTo:(CGFloat)newHeight; 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /Classes/EditableTableViewCellsAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // EditableTableViewCellsAppDelegate.h 3 | // EditableTableViewCells 4 | // 5 | // Created by Jacques Fortier on 9/19/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @class RootViewController; 13 | @class DetailViewController; 14 | 15 | @interface EditableTableViewCellsAppDelegate : NSObject { 16 | 17 | UIWindow *window; 18 | 19 | UISplitViewController *splitViewController; 20 | 21 | RootViewController *rootViewController; 22 | DetailViewController *detailViewController; 23 | } 24 | 25 | @property (nonatomic, retain) IBOutlet UIWindow *window; 26 | 27 | @property (nonatomic, retain) IBOutlet UISplitViewController *splitViewController; 28 | @property (nonatomic, retain) IBOutlet RootViewController *rootViewController; 29 | @property (nonatomic, retain) IBOutlet DetailViewController *detailViewController; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Classes/EditableTableViewCellsAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // EditableTableViewCellsAppDelegate.m 3 | // EditableTableViewCells 4 | // 5 | // Created by Jacques Fortier on 9/19/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "EditableTableViewCellsAppDelegate.h" 10 | 11 | 12 | #import "RootViewController.h" 13 | #import "DetailViewController.h" 14 | 15 | 16 | @implementation EditableTableViewCellsAppDelegate 17 | 18 | @synthesize window, splitViewController, rootViewController, detailViewController; 19 | 20 | 21 | #pragma mark - 22 | #pragma mark Application lifecycle 23 | 24 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 25 | 26 | // Override point for customization after app launch. 27 | 28 | // Add the split view controller's view to the window and display. 29 | [window addSubview:splitViewController.view]; 30 | [window makeKeyAndVisible]; 31 | 32 | return YES; 33 | } 34 | 35 | 36 | - (void)applicationWillResignActive:(UIApplication *)application { 37 | /* 38 | Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 39 | Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 40 | */ 41 | } 42 | 43 | 44 | - (void)applicationDidBecomeActive:(UIApplication *)application { 45 | /* 46 | Restart any tasks that were paused (or not yet started) while the application was inactive. 47 | */ 48 | } 49 | 50 | 51 | - (void)applicationWillTerminate:(UIApplication *)application { 52 | /* 53 | Called when the application is about to terminate. 54 | */ 55 | } 56 | 57 | 58 | #pragma mark - 59 | #pragma mark Memory management 60 | 61 | - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { 62 | /* 63 | Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. 64 | */ 65 | } 66 | 67 | 68 | - (void)dealloc { 69 | [splitViewController release]; 70 | [window release]; 71 | [super dealloc]; 72 | } 73 | 74 | 75 | @end 76 | 77 | -------------------------------------------------------------------------------- /Classes/JFTextViewNoInset.h: -------------------------------------------------------------------------------- 1 | // 2 | // JFTextViewNoInset.h 3 | // Recipe Box 4 | // 5 | // Created by Jacques Fortier on 9/18/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface JFTextViewNoInset : UITextView { 13 | 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/JFTextViewNoInset.m: -------------------------------------------------------------------------------- 1 | // 2 | // JFTextViewNoInset.m 3 | // Recipe Box 4 | // 5 | // Created by Jacques Fortier on 9/18/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "JFTextViewNoInset.h" 10 | 11 | 12 | @implementation JFTextViewNoInset 13 | 14 | - (UIEdgeInsets)contentInset { 15 | return UIEdgeInsetsZero; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Classes/RootViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // RootViewController.h 3 | // EditableTableViewCells 4 | // 5 | // Created by Jacques Fortier on 9/19/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "EditableTableViewCell.h" 11 | 12 | @class DetailViewController; 13 | 14 | @interface RootViewController : UITableViewController { 15 | DetailViewController *detailViewController; 16 | 17 | NSArray *textItems; 18 | 19 | EditableTableViewCell *editingTableViewCell; 20 | } 21 | 22 | @property (nonatomic, retain) IBOutlet DetailViewController *detailViewController; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Classes/RootViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // RootViewController.m 3 | // EditableTableViewCells 4 | // 5 | // Created by Jacques Fortier on 9/19/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "RootViewController.h" 10 | #import "DetailViewController.h" 11 | #import "JFTextViewNoInset.h" 12 | 13 | 14 | @implementation RootViewController 15 | 16 | @synthesize detailViewController; 17 | 18 | 19 | #pragma mark - 20 | #pragma mark View lifecycle 21 | 22 | - (void)viewDidLoad { 23 | [super viewDidLoad]; 24 | self.clearsSelectionOnViewWillAppear = NO; 25 | self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0); 26 | 27 | NSMutableArray *tempArray = [[NSMutableArray alloc] initWithCapacity:10]; 28 | for (int i = 0; i < 10; i++) { 29 | NSMutableString *tempString = [NSMutableString stringWithFormat:@"Editable item %d", i + 1]; 30 | for (int j = 0; j < i; j++) { 31 | [tempString appendString:@" meow meow meow"]; 32 | } 33 | [tempArray addObject:tempString]; 34 | } 35 | 36 | [self.view addSubview:[EditableTableViewCell dummyTextView]]; 37 | 38 | textItems = tempArray; 39 | } 40 | 41 | 42 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 43 | return UIInterfaceOrientationIsLandscape(interfaceOrientation); 44 | } 45 | 46 | 47 | #pragma mark - 48 | #pragma mark Table view data source 49 | 50 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)aTableView { 51 | return 1; 52 | } 53 | 54 | 55 | - (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section { 56 | return [textItems count]; 57 | } 58 | 59 | 60 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 61 | 62 | /* If the requested row is currently being edited, return the cached copy we're holding onto */ 63 | if (editingTableViewCell != nil) { 64 | NSLog(@"Returning cached item"); 65 | NSString *text = [textItems objectAtIndex:indexPath.row]; 66 | if (text == editingTableViewCell.text) { 67 | return editingTableViewCell; 68 | } 69 | 70 | } 71 | 72 | static NSString *CellIdentifier = @"CellIdentifier"; 73 | 74 | // Dequeue or create a cell of the appropriate type. 75 | EditableTableViewCell *cell = (EditableTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 76 | if (cell == nil) { 77 | cell = [[[EditableTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 78 | cell.delegate = self; 79 | } 80 | 81 | // Configure the cell. 82 | cell.text = [textItems objectAtIndex:indexPath.row]; 83 | return cell; 84 | } 85 | 86 | 87 | - (CGFloat)tableView:(UITableView *)aTableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 88 | NSString *text = [textItems objectAtIndex:indexPath.row]; 89 | 90 | if (editingTableViewCell.text == text) { 91 | // Use the cell's version of the text because edits may not have been committed back the array 92 | return editingTableViewCell.textView.contentSize.height + 11; 93 | } 94 | else { 95 | return [EditableTableViewCell heightForText:text]; 96 | } 97 | 98 | } 99 | 100 | 101 | - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { 102 | return nil; 103 | } 104 | 105 | 106 | #pragma mark - 107 | #pragma mark EditableTableViewCellDelegate 108 | 109 | - (void)editableTableViewCellDidBeginEditing:(EditableTableViewCell *)editableTableViewCell { 110 | editingTableViewCell = editableTableViewCell; 111 | } 112 | 113 | 114 | - (void)editableTableViewCellDidEndEditing:(EditableTableViewCell *)editableTableViewCell { 115 | editingTableViewCell = editableTableViewCell; 116 | } 117 | 118 | 119 | - (void)editableTableViewCell:(EditableTableViewCell *)editableTableViewCell heightChangedTo:(CGFloat)newHeight { 120 | // Calling beginUpdates/endUpdates causes the table view to reload cell geometries 121 | [self.tableView beginUpdates]; 122 | [self.tableView endUpdates]; 123 | } 124 | 125 | 126 | #pragma mark - 127 | #pragma mark Memory management 128 | 129 | - (void)didReceiveMemoryWarning { 130 | // Releases the view if it doesn't have a superview. 131 | [super didReceiveMemoryWarning]; 132 | 133 | // Relinquish ownership any cached data, images, etc. that aren't in use. 134 | } 135 | 136 | - (void)viewDidUnload { 137 | // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand. 138 | // For example: self.myOutlet = nil; 139 | } 140 | 141 | 142 | - (void)dealloc { 143 | [detailViewController release]; 144 | [super dealloc]; 145 | } 146 | 147 | 148 | @end 149 | 150 | -------------------------------------------------------------------------------- /DetailView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 800 5 | 10D559 6 | 761 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 84 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBIPadFramework 35 | 36 | 37 | IBFirstResponder 38 | IBIPadFramework 39 | 40 | 41 | 42 | 274 43 | 44 | YES 45 | 46 | 47 | 298 48 | {{20, 475}, {728, 21}} 49 | 50 | 51 | 3 52 | MQA 53 | 54 | YES 55 | NO 56 | IBIPadFramework 57 | Detail view content goes here 58 | 59 | 1 60 | MCAwIDAAA 61 | 62 | 63 | 1 64 | 10 65 | 1 66 | 67 | 68 | 69 | 290 70 | {768, 44} 71 | 72 | NO 73 | NO 74 | IBIPadFramework 75 | 76 | YES 77 | 78 | 79 | 80 | {768, 1004} 81 | 82 | 83 | NO 84 | 85 | 2 86 | 87 | IBIPadFramework 88 | 89 | 90 | 91 | 92 | YES 93 | 94 | 95 | view 96 | 97 | 98 | 99 | 12 100 | 101 | 102 | 103 | toolbar 104 | 105 | 106 | 107 | 65 108 | 109 | 110 | 111 | detailDescriptionLabel 112 | 113 | 114 | 115 | 66 116 | 117 | 118 | 119 | 120 | YES 121 | 122 | 0 123 | 124 | 125 | 126 | 127 | 128 | -1 129 | 130 | 131 | File's Owner 132 | 133 | 134 | -2 135 | 136 | 137 | 138 | 139 | 8 140 | 141 | 142 | YES 143 | 144 | 145 | 146 | 147 | 148 | 149 | 45 150 | 151 | 152 | 153 | 154 | 63 155 | 156 | 157 | YES 158 | 159 | 160 | 161 | 162 | 163 | 164 | YES 165 | 166 | YES 167 | -1.CustomClassName 168 | -2.CustomClassName 169 | 45.IBPluginDependency 170 | 63.IBPluginDependency 171 | 8.IBEditorWindowLastContentRect 172 | 8.IBPluginDependency 173 | 174 | 175 | YES 176 | DetailViewController 177 | UIResponder 178 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 179 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 180 | {{194, 0}, {783, 856}} 181 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 182 | 183 | 184 | 185 | YES 186 | 187 | 188 | YES 189 | 190 | 191 | 192 | 193 | YES 194 | 195 | 196 | YES 197 | 198 | 199 | 200 | 66 201 | 202 | 203 | 204 | YES 205 | 206 | DetailViewController 207 | UIViewController 208 | 209 | YES 210 | 211 | YES 212 | detailDescriptionLabel 213 | detailItem 214 | toolbar 215 | 216 | 217 | YES 218 | UILabel 219 | id 220 | UIToolbar 221 | 222 | 223 | 224 | IBProjectSource 225 | Classes/DetailViewController.h 226 | 227 | 228 | 229 | 230 | YES 231 | 232 | NSObject 233 | 234 | IBFrameworkSource 235 | Foundation.framework/Headers/NSError.h 236 | 237 | 238 | 239 | NSObject 240 | 241 | IBFrameworkSource 242 | Foundation.framework/Headers/NSFileManager.h 243 | 244 | 245 | 246 | NSObject 247 | 248 | IBFrameworkSource 249 | Foundation.framework/Headers/NSKeyValueCoding.h 250 | 251 | 252 | 253 | NSObject 254 | 255 | IBFrameworkSource 256 | Foundation.framework/Headers/NSKeyValueObserving.h 257 | 258 | 259 | 260 | NSObject 261 | 262 | IBFrameworkSource 263 | Foundation.framework/Headers/NSKeyedArchiver.h 264 | 265 | 266 | 267 | NSObject 268 | 269 | IBFrameworkSource 270 | Foundation.framework/Headers/NSNetServices.h 271 | 272 | 273 | 274 | NSObject 275 | 276 | IBFrameworkSource 277 | Foundation.framework/Headers/NSObject.h 278 | 279 | 280 | 281 | NSObject 282 | 283 | IBFrameworkSource 284 | Foundation.framework/Headers/NSPort.h 285 | 286 | 287 | 288 | NSObject 289 | 290 | IBFrameworkSource 291 | Foundation.framework/Headers/NSRunLoop.h 292 | 293 | 294 | 295 | NSObject 296 | 297 | IBFrameworkSource 298 | Foundation.framework/Headers/NSStream.h 299 | 300 | 301 | 302 | NSObject 303 | 304 | IBFrameworkSource 305 | Foundation.framework/Headers/NSThread.h 306 | 307 | 308 | 309 | NSObject 310 | 311 | IBFrameworkSource 312 | Foundation.framework/Headers/NSURL.h 313 | 314 | 315 | 316 | NSObject 317 | 318 | IBFrameworkSource 319 | Foundation.framework/Headers/NSURLConnection.h 320 | 321 | 322 | 323 | NSObject 324 | 325 | IBFrameworkSource 326 | Foundation.framework/Headers/NSXMLParser.h 327 | 328 | 329 | 330 | NSObject 331 | 332 | IBFrameworkSource 333 | UIKit.framework/Headers/UIAccessibility.h 334 | 335 | 336 | 337 | NSObject 338 | 339 | IBFrameworkSource 340 | UIKit.framework/Headers/UINibLoading.h 341 | 342 | 343 | 344 | NSObject 345 | 346 | IBFrameworkSource 347 | UIKit.framework/Headers/UIResponder.h 348 | 349 | 350 | 351 | UILabel 352 | UIView 353 | 354 | IBFrameworkSource 355 | UIKit.framework/Headers/UILabel.h 356 | 357 | 358 | 359 | UIResponder 360 | NSObject 361 | 362 | 363 | 364 | UISearchBar 365 | UIView 366 | 367 | IBFrameworkSource 368 | UIKit.framework/Headers/UISearchBar.h 369 | 370 | 371 | 372 | UISearchDisplayController 373 | NSObject 374 | 375 | IBFrameworkSource 376 | UIKit.framework/Headers/UISearchDisplayController.h 377 | 378 | 379 | 380 | UIToolbar 381 | UIView 382 | 383 | IBFrameworkSource 384 | UIKit.framework/Headers/UIToolbar.h 385 | 386 | 387 | 388 | UIView 389 | 390 | IBFrameworkSource 391 | UIKit.framework/Headers/UITextField.h 392 | 393 | 394 | 395 | UIView 396 | UIResponder 397 | 398 | IBFrameworkSource 399 | UIKit.framework/Headers/UIView.h 400 | 401 | 402 | 403 | UIViewController 404 | 405 | IBFrameworkSource 406 | UIKit.framework/Headers/UINavigationController.h 407 | 408 | 409 | 410 | UIViewController 411 | 412 | IBFrameworkSource 413 | UIKit.framework/Headers/UIPopoverController.h 414 | 415 | 416 | 417 | UIViewController 418 | 419 | IBFrameworkSource 420 | UIKit.framework/Headers/UISplitViewController.h 421 | 422 | 423 | 424 | UIViewController 425 | 426 | IBFrameworkSource 427 | UIKit.framework/Headers/UITabBarController.h 428 | 429 | 430 | 431 | UIViewController 432 | UIResponder 433 | 434 | IBFrameworkSource 435 | UIKit.framework/Headers/UIViewController.h 436 | 437 | 438 | 439 | 440 | 0 441 | IBIPadFramework 442 | 443 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 444 | 445 | 446 | 447 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 448 | 449 | 450 | YES 451 | EditableTableViewCells.xcodeproj 452 | 3 453 | 84 454 | 455 | 456 | -------------------------------------------------------------------------------- /EditableTableViewCells-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | com.yourcompany.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | NSMainNibFile 28 | MainWindow 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationLandscapeLeft 32 | UIInterfaceOrientationLandscapeRight 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /EditableTableViewCells.xcodeproj/jacquesf.pbxuser: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | 1D3623240D0F684500981E51 /* EditableTableViewCellsAppDelegate.h */ = { 4 | uiCtxt = { 5 | sepNavIntBoundsRect = "{{0, 0}, {632, 533}}"; 6 | sepNavSelRange = "{0, 0}"; 7 | sepNavVisRange = "{0, 833}"; 8 | }; 9 | }; 10 | 1D3623250D0F684500981E51 /* EditableTableViewCellsAppDelegate.m */ = { 11 | uiCtxt = { 12 | sepNavIntBoundsRect = "{{0, 0}, {840, 825}}"; 13 | sepNavSelRange = "{0, 0}"; 14 | sepNavVisRange = "{179, 1498}"; 15 | }; 16 | }; 17 | 1D6058900D05DD3D006BFB54 /* EditableTableViewCells */ = { 18 | activeExec = 0; 19 | executables = ( 20 | ECFE468F1245C5DF001BB6AE /* EditableTableViewCells */, 21 | ); 22 | }; 23 | 28042007108E984D000629CD /* RootViewController.h */ = { 24 | uiCtxt = { 25 | sepNavIntBoundsRect = "{{0, 0}, {840, 554}}"; 26 | sepNavSelRange = "{471, 0}"; 27 | sepNavVisRange = "{0, 563}"; 28 | }; 29 | }; 30 | 28042008108E984D000629CD /* RootViewController.m */ = { 31 | uiCtxt = { 32 | sepNavIntBoundsRect = "{{0, 0}, {840, 1936}}"; 33 | sepNavSelRange = "{841, 0}"; 34 | sepNavVisRange = "{163, 1283}"; 35 | }; 36 | }; 37 | 28042009108E984D000629CD /* DetailViewController.h */ = { 38 | uiCtxt = { 39 | sepNavIntBoundsRect = "{{0, 0}, {840, 554}}"; 40 | sepNavSelRange = "{0, 0}"; 41 | sepNavVisRange = "{0, 625}"; 42 | }; 43 | }; 44 | 2804200A108E984D000629CD /* DetailViewController.m */ = { 45 | uiCtxt = { 46 | sepNavIntBoundsRect = "{{0, 0}, {632, 1606}}"; 47 | sepNavSelRange = "{2398, 68}"; 48 | sepNavVisRange = "{1646, 1282}"; 49 | }; 50 | }; 51 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 52 | activeBuildConfigurationName = Debug; 53 | activeExecutable = ECFE468F1245C5DF001BB6AE /* EditableTableViewCells */; 54 | activeSDKPreference = iphonesimulator3.2; 55 | activeTarget = 1D6058900D05DD3D006BFB54 /* EditableTableViewCells */; 56 | addToTargets = ( 57 | 1D6058900D05DD3D006BFB54 /* EditableTableViewCells */, 58 | ); 59 | codeSenseManager = ECFE469A1245C5FF001BB6AE /* Code sense */; 60 | executables = ( 61 | ECFE468F1245C5DF001BB6AE /* EditableTableViewCells */, 62 | ); 63 | perUserDictionary = { 64 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { 65 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; 66 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; 67 | PBXFileTableDataSourceColumnWidthsKey = ( 68 | 20, 69 | 650, 70 | 20, 71 | 48, 72 | 43, 73 | 43, 74 | 20, 75 | ); 76 | PBXFileTableDataSourceColumnsKey = ( 77 | PBXFileDataSource_FiletypeID, 78 | PBXFileDataSource_Filename_ColumnID, 79 | PBXFileDataSource_Built_ColumnID, 80 | PBXFileDataSource_ObjectSize_ColumnID, 81 | PBXFileDataSource_Errors_ColumnID, 82 | PBXFileDataSource_Warnings_ColumnID, 83 | PBXFileDataSource_Target_ColumnID, 84 | ); 85 | }; 86 | PBXPerProjectTemplateStateSaveDate = 306575877; 87 | PBXWorkspaceStateSaveDate = 306575877; 88 | }; 89 | perUserProjectItems = { 90 | EC0516021245FA0C0009F235 /* PBXTextBookmark */ = EC0516021245FA0C0009F235 /* PBXTextBookmark */; 91 | EC7E89801245F9F400837847 /* PBXTextBookmark */ = EC7E89801245F9F400837847 /* PBXTextBookmark */; 92 | ECFE47621245EBF6001BB6AE /* PBXTextBookmark */ = ECFE47621245EBF6001BB6AE /* PBXTextBookmark */; 93 | ECFE47631245EBF6001BB6AE /* PBXTextBookmark */ = ECFE47631245EBF6001BB6AE /* PBXTextBookmark */; 94 | ECFE47641245EBF6001BB6AE /* PlistBookmark */ = ECFE47641245EBF6001BB6AE /* PlistBookmark */; 95 | ECFE47651245EBF6001BB6AE /* PBXTextBookmark */ = ECFE47651245EBF6001BB6AE /* PBXTextBookmark */; 96 | ECFE47661245EBF6001BB6AE /* PBXTextBookmark */ = ECFE47661245EBF6001BB6AE /* PBXTextBookmark */; 97 | ECFE47671245EBF6001BB6AE /* PBXTextBookmark */ = ECFE47671245EBF6001BB6AE /* PBXTextBookmark */; 98 | ECFE47681245EBF6001BB6AE /* PBXTextBookmark */ = ECFE47681245EBF6001BB6AE /* PBXTextBookmark */; 99 | ECFE47691245EBF6001BB6AE /* PBXTextBookmark */ = ECFE47691245EBF6001BB6AE /* PBXTextBookmark */; 100 | ECFE476A1245EBF6001BB6AE /* PBXTextBookmark */ = ECFE476A1245EBF6001BB6AE /* PBXTextBookmark */; 101 | ECFE476B1245EBF6001BB6AE /* PBXTextBookmark */ = ECFE476B1245EBF6001BB6AE /* PBXTextBookmark */; 102 | }; 103 | sourceControlManager = ECFE46991245C5FF001BB6AE /* Source Control */; 104 | userBuildSettings = { 105 | }; 106 | }; 107 | EC0516021245FA0C0009F235 /* PBXTextBookmark */ = { 108 | isa = PBXTextBookmark; 109 | fRef = ECFE469D1245C669001BB6AE /* EditableTableViewCell.m */; 110 | name = "EditableTableViewCell.m: 22"; 111 | rLen = 0; 112 | rLoc = 547; 113 | rType = 0; 114 | vrLen = 1446; 115 | vrLoc = 2390; 116 | }; 117 | EC7E89801245F9F400837847 /* PBXTextBookmark */ = { 118 | isa = PBXTextBookmark; 119 | fRef = ECFE469D1245C669001BB6AE /* EditableTableViewCell.m */; 120 | name = "EditableTableViewCell.m: 22"; 121 | rLen = 0; 122 | rLoc = 547; 123 | rType = 0; 124 | vrLen = 1431; 125 | vrLoc = 266; 126 | }; 127 | ECFE468F1245C5DF001BB6AE /* EditableTableViewCells */ = { 128 | isa = PBXExecutable; 129 | activeArgIndices = ( 130 | ); 131 | argumentStrings = ( 132 | ); 133 | autoAttachOnCrash = 1; 134 | breakpointsEnabled = 0; 135 | configStateDict = { 136 | }; 137 | customDataFormattersEnabled = 1; 138 | dataTipCustomDataFormattersEnabled = 1; 139 | dataTipShowTypeColumn = 1; 140 | dataTipSortType = 0; 141 | debuggerPlugin = GDBDebugging; 142 | disassemblyDisplayState = 0; 143 | dylibVariantSuffix = ""; 144 | enableDebugStr = 1; 145 | environmentEntries = ( 146 | ); 147 | executableSystemSymbolLevel = 0; 148 | executableUserSymbolLevel = 0; 149 | libgmallocEnabled = 0; 150 | name = EditableTableViewCells; 151 | savedGlobals = { 152 | }; 153 | showTypeColumn = 0; 154 | sourceDirectories = ( 155 | ); 156 | }; 157 | ECFE46991245C5FF001BB6AE /* Source Control */ = { 158 | isa = PBXSourceControlManager; 159 | fallbackIsa = XCSourceControlManager; 160 | isSCMEnabled = 0; 161 | scmConfiguration = { 162 | repositoryNamesForRoots = { 163 | "" = ""; 164 | }; 165 | }; 166 | }; 167 | ECFE469A1245C5FF001BB6AE /* Code sense */ = { 168 | isa = PBXCodeSenseManager; 169 | indexTemplatePath = ""; 170 | }; 171 | ECFE469C1245C669001BB6AE /* EditableTableViewCell.h */ = { 172 | uiCtxt = { 173 | sepNavIntBoundsRect = "{{0, 0}, {840, 554}}"; 174 | sepNavSelRange = "{434, 0}"; 175 | sepNavVisRange = "{0, 441}"; 176 | }; 177 | }; 178 | ECFE469D1245C669001BB6AE /* EditableTableViewCell.m */ = { 179 | uiCtxt = { 180 | sepNavIntBoundsRect = "{{0, 0}, {840, 1727}}"; 181 | sepNavSelRange = "{547, 0}"; 182 | sepNavVisRange = "{2390, 1446}"; 183 | }; 184 | }; 185 | ECFE469E1245C669001BB6AE /* EditableTableViewCellDelegate.h */ = { 186 | uiCtxt = { 187 | sepNavIntBoundsRect = "{{0, 0}, {840, 554}}"; 188 | sepNavSelRange = "{392, 0}"; 189 | sepNavVisRange = "{0, 400}"; 190 | }; 191 | }; 192 | ECFE46A01245C669001BB6AE /* JFTextViewNoInset.m */ = { 193 | uiCtxt = { 194 | sepNavIntBoundsRect = "{{0, 0}, {840, 554}}"; 195 | sepNavSelRange = "{0, 0}"; 196 | sepNavVisRange = "{0, 286}"; 197 | }; 198 | }; 199 | ECFE47621245EBF6001BB6AE /* PBXTextBookmark */ = { 200 | isa = PBXTextBookmark; 201 | fRef = 1D3623240D0F684500981E51 /* EditableTableViewCellsAppDelegate.h */; 202 | name = "EditableTableViewCellsAppDelegate.h: 1"; 203 | rLen = 0; 204 | rLoc = 0; 205 | rType = 0; 206 | vrLen = 833; 207 | vrLoc = 0; 208 | }; 209 | ECFE47631245EBF6001BB6AE /* PBXTextBookmark */ = { 210 | isa = PBXTextBookmark; 211 | fRef = 2804200A108E984D000629CD /* DetailViewController.m */; 212 | name = "DetailViewController.m: 81"; 213 | rLen = 68; 214 | rLoc = 2398; 215 | rType = 0; 216 | vrLen = 1282; 217 | vrLoc = 1646; 218 | }; 219 | ECFE47641245EBF6001BB6AE /* PlistBookmark */ = { 220 | isa = PlistBookmark; 221 | fRef = 8D1107310486CEB800E47090 /* EditableTableViewCells-Info.plist */; 222 | fallbackIsa = PBXBookmark; 223 | isK = 0; 224 | kPath = ( 225 | UISupportedInterfaceOrientations, 226 | 0, 227 | ); 228 | name = "/Users/jacquesf/Programming/Sandbox/EditableTableViewCells/EditableTableViewCells-Info.plist"; 229 | rLen = 0; 230 | rLoc = 9223372036854775808; 231 | }; 232 | ECFE47651245EBF6001BB6AE /* PBXTextBookmark */ = { 233 | isa = PBXTextBookmark; 234 | fRef = ECFE46A01245C669001BB6AE /* JFTextViewNoInset.m */; 235 | name = "JFTextViewNoInset.m: 1"; 236 | rLen = 0; 237 | rLoc = 0; 238 | rType = 0; 239 | vrLen = 286; 240 | vrLoc = 0; 241 | }; 242 | ECFE47661245EBF6001BB6AE /* PBXTextBookmark */ = { 243 | isa = PBXTextBookmark; 244 | fRef = ECFE469E1245C669001BB6AE /* EditableTableViewCellDelegate.h */; 245 | name = "EditableTableViewCellDelegate.h: 9"; 246 | rLen = 0; 247 | rLoc = 392; 248 | rType = 0; 249 | vrLen = 400; 250 | vrLoc = 0; 251 | }; 252 | ECFE47671245EBF6001BB6AE /* PBXTextBookmark */ = { 253 | isa = PBXTextBookmark; 254 | fRef = 28042009108E984D000629CD /* DetailViewController.h */; 255 | name = "DetailViewController.h: 1"; 256 | rLen = 0; 257 | rLoc = 0; 258 | rType = 0; 259 | vrLen = 625; 260 | vrLoc = 0; 261 | }; 262 | ECFE47681245EBF6001BB6AE /* PBXTextBookmark */ = { 263 | isa = PBXTextBookmark; 264 | fRef = 1D3623250D0F684500981E51 /* EditableTableViewCellsAppDelegate.m */; 265 | name = "EditableTableViewCellsAppDelegate.m: 1"; 266 | rLen = 0; 267 | rLoc = 0; 268 | rType = 0; 269 | vrLen = 1498; 270 | vrLoc = 179; 271 | }; 272 | ECFE47691245EBF6001BB6AE /* PBXTextBookmark */ = { 273 | isa = PBXTextBookmark; 274 | fRef = 28042007108E984D000629CD /* RootViewController.h */; 275 | name = "RootViewController.h: 20"; 276 | rLen = 0; 277 | rLoc = 471; 278 | rType = 0; 279 | vrLen = 563; 280 | vrLoc = 0; 281 | }; 282 | ECFE476A1245EBF6001BB6AE /* PBXTextBookmark */ = { 283 | isa = PBXTextBookmark; 284 | fRef = ECFE469C1245C669001BB6AE /* EditableTableViewCell.h */; 285 | name = "EditableTableViewCell.h: 14"; 286 | rLen = 0; 287 | rLoc = 434; 288 | rType = 0; 289 | vrLen = 441; 290 | vrLoc = 0; 291 | }; 292 | ECFE476B1245EBF6001BB6AE /* PBXTextBookmark */ = { 293 | isa = PBXTextBookmark; 294 | fRef = 28042008108E984D000629CD /* RootViewController.m */; 295 | name = "RootViewController.m: 31"; 296 | rLen = 0; 297 | rLoc = 841; 298 | rType = 0; 299 | vrLen = 1283; 300 | vrLoc = 163; 301 | }; 302 | } 303 | -------------------------------------------------------------------------------- /EditableTableViewCells.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1D3623260D0F684500981E51 /* EditableTableViewCellsAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* EditableTableViewCellsAppDelegate.m */; }; 11 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 12 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 13 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 14 | 2804200B108E984D000629CD /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28042008108E984D000629CD /* RootViewController.m */; }; 15 | 2804200C108E984D000629CD /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2804200A108E984D000629CD /* DetailViewController.m */; }; 16 | 2804203C108E9BAB000629CD /* DetailView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2804203B108E9BAB000629CD /* DetailView.xib */; }; 17 | 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; }; 18 | 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; }; 19 | ECFE46A11245C669001BB6AE /* EditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFE469D1245C669001BB6AE /* EditableTableViewCell.m */; }; 20 | ECFE46A21245C669001BB6AE /* JFTextViewNoInset.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFE46A01245C669001BB6AE /* JFTextViewNoInset.m */; }; 21 | /* End PBXBuildFile section */ 22 | 23 | /* Begin PBXFileReference section */ 24 | 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 25 | 1D3623240D0F684500981E51 /* EditableTableViewCellsAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditableTableViewCellsAppDelegate.h; sourceTree = ""; }; 26 | 1D3623250D0F684500981E51 /* EditableTableViewCellsAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EditableTableViewCellsAppDelegate.m; sourceTree = ""; }; 27 | 1D6058910D05DD3D006BFB54 /* EditableTableViewCells.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EditableTableViewCells.app; sourceTree = BUILT_PRODUCTS_DIR; }; 28 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 29 | 28042007108E984D000629CD /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; 30 | 28042008108E984D000629CD /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; }; 31 | 28042009108E984D000629CD /* DetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailViewController.h; sourceTree = ""; }; 32 | 2804200A108E984D000629CD /* DetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailViewController.m; sourceTree = ""; }; 33 | 2804203B108E9BAB000629CD /* DetailView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DetailView.xib; sourceTree = ""; }; 34 | 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 35 | 28A0AAE50D9B0CCF005BE974 /* EditableTableViewCells_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditableTableViewCells_Prefix.pch; sourceTree = ""; }; 36 | 28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 37 | 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 38 | 8D1107310486CEB800E47090 /* EditableTableViewCells-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "EditableTableViewCells-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; 39 | ECFE469C1245C669001BB6AE /* EditableTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditableTableViewCell.h; sourceTree = ""; }; 40 | ECFE469D1245C669001BB6AE /* EditableTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EditableTableViewCell.m; sourceTree = ""; }; 41 | ECFE469E1245C669001BB6AE /* EditableTableViewCellDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditableTableViewCellDelegate.h; sourceTree = ""; }; 42 | ECFE469F1245C669001BB6AE /* JFTextViewNoInset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFTextViewNoInset.h; sourceTree = ""; }; 43 | ECFE46A01245C669001BB6AE /* JFTextViewNoInset.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFTextViewNoInset.m; sourceTree = ""; }; 44 | /* End PBXFileReference section */ 45 | 46 | /* Begin PBXFrameworksBuildPhase section */ 47 | 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { 48 | isa = PBXFrameworksBuildPhase; 49 | buildActionMask = 2147483647; 50 | files = ( 51 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 52 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 53 | 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */, 54 | ); 55 | runOnlyForDeploymentPostprocessing = 0; 56 | }; 57 | /* End PBXFrameworksBuildPhase section */ 58 | 59 | /* Begin PBXGroup section */ 60 | 080E96DDFE201D6D7F000001 /* Classes */ = { 61 | isa = PBXGroup; 62 | children = ( 63 | ECFE469C1245C669001BB6AE /* EditableTableViewCell.h */, 64 | ECFE469D1245C669001BB6AE /* EditableTableViewCell.m */, 65 | ECFE469E1245C669001BB6AE /* EditableTableViewCellDelegate.h */, 66 | ECFE469F1245C669001BB6AE /* JFTextViewNoInset.h */, 67 | ECFE46A01245C669001BB6AE /* JFTextViewNoInset.m */, 68 | 28042007108E984D000629CD /* RootViewController.h */, 69 | 28042008108E984D000629CD /* RootViewController.m */, 70 | 1D3623240D0F684500981E51 /* EditableTableViewCellsAppDelegate.h */, 71 | 1D3623250D0F684500981E51 /* EditableTableViewCellsAppDelegate.m */, 72 | 28042009108E984D000629CD /* DetailViewController.h */, 73 | 2804200A108E984D000629CD /* DetailViewController.m */, 74 | ); 75 | path = Classes; 76 | sourceTree = ""; 77 | }; 78 | 19C28FACFE9D520D11CA2CBB /* Products */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | 1D6058910D05DD3D006BFB54 /* EditableTableViewCells.app */, 82 | ); 83 | name = Products; 84 | sourceTree = ""; 85 | }; 86 | 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 080E96DDFE201D6D7F000001 /* Classes */, 90 | 29B97315FDCFA39411CA2CEA /* Other Sources */, 91 | 29B97317FDCFA39411CA2CEA /* Resources */, 92 | 29B97323FDCFA39411CA2CEA /* Frameworks */, 93 | 19C28FACFE9D520D11CA2CBB /* Products */, 94 | ); 95 | name = CustomTemplate; 96 | sourceTree = ""; 97 | }; 98 | 29B97315FDCFA39411CA2CEA /* Other Sources */ = { 99 | isa = PBXGroup; 100 | children = ( 101 | 28A0AAE50D9B0CCF005BE974 /* EditableTableViewCells_Prefix.pch */, 102 | 29B97316FDCFA39411CA2CEA /* main.m */, 103 | ); 104 | name = "Other Sources"; 105 | sourceTree = ""; 106 | }; 107 | 29B97317FDCFA39411CA2CEA /* Resources */ = { 108 | isa = PBXGroup; 109 | children = ( 110 | 28AD735F0D9D9599002E5188 /* MainWindow.xib */, 111 | 2804203B108E9BAB000629CD /* DetailView.xib */, 112 | 8D1107310486CEB800E47090 /* EditableTableViewCells-Info.plist */, 113 | ); 114 | name = Resources; 115 | sourceTree = ""; 116 | }; 117 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { 118 | isa = PBXGroup; 119 | children = ( 120 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, 121 | 1D30AB110D05D00D00671497 /* Foundation.framework */, 122 | 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */, 123 | ); 124 | name = Frameworks; 125 | sourceTree = ""; 126 | }; 127 | /* End PBXGroup section */ 128 | 129 | /* Begin PBXNativeTarget section */ 130 | 1D6058900D05DD3D006BFB54 /* EditableTableViewCells */ = { 131 | isa = PBXNativeTarget; 132 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "EditableTableViewCells" */; 133 | buildPhases = ( 134 | 1D60588D0D05DD3D006BFB54 /* Resources */, 135 | 1D60588E0D05DD3D006BFB54 /* Sources */, 136 | 1D60588F0D05DD3D006BFB54 /* Frameworks */, 137 | ); 138 | buildRules = ( 139 | ); 140 | dependencies = ( 141 | ); 142 | name = EditableTableViewCells; 143 | productName = EditableTableViewCells; 144 | productReference = 1D6058910D05DD3D006BFB54 /* EditableTableViewCells.app */; 145 | productType = "com.apple.product-type.application"; 146 | }; 147 | /* End PBXNativeTarget section */ 148 | 149 | /* Begin PBXProject section */ 150 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 151 | isa = PBXProject; 152 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "EditableTableViewCells" */; 153 | compatibilityVersion = "Xcode 3.2"; 154 | developmentRegion = English; 155 | hasScannedForEncodings = 1; 156 | knownRegions = ( 157 | English, 158 | Japanese, 159 | French, 160 | German, 161 | en, 162 | ); 163 | mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; 164 | projectDirPath = ""; 165 | projectRoot = ""; 166 | targets = ( 167 | 1D6058900D05DD3D006BFB54 /* EditableTableViewCells */, 168 | ); 169 | }; 170 | /* End PBXProject section */ 171 | 172 | /* Begin PBXResourcesBuildPhase section */ 173 | 1D60588D0D05DD3D006BFB54 /* Resources */ = { 174 | isa = PBXResourcesBuildPhase; 175 | buildActionMask = 2147483647; 176 | files = ( 177 | 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */, 178 | 2804203C108E9BAB000629CD /* DetailView.xib in Resources */, 179 | ); 180 | runOnlyForDeploymentPostprocessing = 0; 181 | }; 182 | /* End PBXResourcesBuildPhase section */ 183 | 184 | /* Begin PBXSourcesBuildPhase section */ 185 | 1D60588E0D05DD3D006BFB54 /* Sources */ = { 186 | isa = PBXSourcesBuildPhase; 187 | buildActionMask = 2147483647; 188 | files = ( 189 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */, 190 | 1D3623260D0F684500981E51 /* EditableTableViewCellsAppDelegate.m in Sources */, 191 | 2804200B108E984D000629CD /* RootViewController.m in Sources */, 192 | 2804200C108E984D000629CD /* DetailViewController.m in Sources */, 193 | ECFE46A11245C669001BB6AE /* EditableTableViewCell.m in Sources */, 194 | ECFE46A21245C669001BB6AE /* JFTextViewNoInset.m in Sources */, 195 | ); 196 | runOnlyForDeploymentPostprocessing = 0; 197 | }; 198 | /* End PBXSourcesBuildPhase section */ 199 | 200 | /* Begin XCBuildConfiguration section */ 201 | 1D6058940D05DD3E006BFB54 /* Debug */ = { 202 | isa = XCBuildConfiguration; 203 | buildSettings = { 204 | ALWAYS_SEARCH_USER_PATHS = NO; 205 | COPY_PHASE_STRIP = NO; 206 | GCC_DYNAMIC_NO_PIC = NO; 207 | GCC_OPTIMIZATION_LEVEL = 0; 208 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 209 | GCC_PREFIX_HEADER = EditableTableViewCells_Prefix.pch; 210 | INFOPLIST_FILE = "EditableTableViewCells-Info.plist"; 211 | PRODUCT_NAME = EditableTableViewCells; 212 | }; 213 | name = Debug; 214 | }; 215 | 1D6058950D05DD3E006BFB54 /* Release */ = { 216 | isa = XCBuildConfiguration; 217 | buildSettings = { 218 | ALWAYS_SEARCH_USER_PATHS = NO; 219 | COPY_PHASE_STRIP = YES; 220 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 221 | GCC_PREFIX_HEADER = EditableTableViewCells_Prefix.pch; 222 | INFOPLIST_FILE = "EditableTableViewCells-Info.plist"; 223 | PRODUCT_NAME = EditableTableViewCells; 224 | VALIDATE_PRODUCT = YES; 225 | }; 226 | name = Release; 227 | }; 228 | C01FCF4F08A954540054247B /* Debug */ = { 229 | isa = XCBuildConfiguration; 230 | buildSettings = { 231 | ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; 232 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 233 | GCC_C_LANGUAGE_STANDARD = c99; 234 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 235 | GCC_WARN_UNUSED_VARIABLE = YES; 236 | PREBINDING = NO; 237 | SDKROOT = iphoneos3.2; 238 | TARGETED_DEVICE_FAMILY = 2; 239 | }; 240 | name = Debug; 241 | }; 242 | C01FCF5008A954540054247B /* Release */ = { 243 | isa = XCBuildConfiguration; 244 | buildSettings = { 245 | ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; 246 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 247 | GCC_C_LANGUAGE_STANDARD = c99; 248 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 249 | GCC_WARN_UNUSED_VARIABLE = YES; 250 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 251 | PREBINDING = NO; 252 | SDKROOT = iphoneos3.2; 253 | TARGETED_DEVICE_FAMILY = 2; 254 | }; 255 | name = Release; 256 | }; 257 | /* End XCBuildConfiguration section */ 258 | 259 | /* Begin XCConfigurationList section */ 260 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "EditableTableViewCells" */ = { 261 | isa = XCConfigurationList; 262 | buildConfigurations = ( 263 | 1D6058940D05DD3E006BFB54 /* Debug */, 264 | 1D6058950D05DD3E006BFB54 /* Release */, 265 | ); 266 | defaultConfigurationIsVisible = 0; 267 | defaultConfigurationName = Release; 268 | }; 269 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "EditableTableViewCells" */ = { 270 | isa = XCConfigurationList; 271 | buildConfigurations = ( 272 | C01FCF4F08A954540054247B /* Debug */, 273 | C01FCF5008A954540054247B /* Release */, 274 | ); 275 | defaultConfigurationIsVisible = 0; 276 | defaultConfigurationName = Release; 277 | }; 278 | /* End XCConfigurationList section */ 279 | }; 280 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; 281 | } 282 | -------------------------------------------------------------------------------- /EditableTableViewCells_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'EditableTableViewCells' target in the 'EditableTableViewCells' project 3 | // 4 | #import 5 | 6 | #ifndef __IPHONE_3_2 7 | #warning "This project uses features only available in iPhone SDK 3.2 and later." 8 | #endif 9 | 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 800 5 | 10D559 6 | 761 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 84 12 | 13 | 14 | 15 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 16 | 17 | 18 | 19 | 20 | IBFilesOwner 21 | IBIPadFramework 22 | 23 | 24 | IBFirstResponder 25 | IBIPadFramework 26 | 27 | 28 | 29 | 292 30 | {768, 1024} 31 | 32 | 1 33 | MSAxIDEAA 34 | 35 | NO 36 | NO 37 | 38 | 2 39 | 40 | IBIPadFramework 41 | YES 42 | 43 | 44 | IBIPadFramework 45 | 46 | 47 | 48 | 49 | 2 50 | 51 | 52 | 3 53 | 54 | IBIPadFramework 55 | YES 56 | 57 | 58 | 59 | 2 60 | 61 | 62 | 1 63 | 64 | IBIPadFramework 65 | NO 66 | 67 | 68 | 256 69 | {0, 0} 70 | YES 71 | YES 72 | IBIPadFramework 73 | 74 | 75 | 76 | 77 | Root View Controller 78 | IBIPadFramework 79 | 80 | 81 | 82 | 2 83 | 84 | 85 | 1 86 | 87 | IBIPadFramework 88 | NO 89 | 90 | 91 | 92 | 93 | 94 | 95 | DetailView 96 | 97 | 1 98 | 99 | IBIPadFramework 100 | NO 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | window 109 | 110 | 111 | 112 | 4 113 | 114 | 115 | 116 | delegate 117 | 118 | 119 | 120 | 17 121 | 122 | 123 | 124 | splitViewController 125 | 126 | 127 | 128 | 43 129 | 130 | 131 | 132 | rootViewController 133 | 134 | 135 | 136 | 44 137 | 138 | 139 | 140 | detailViewController 141 | 142 | 143 | 144 | 45 145 | 146 | 147 | 148 | detailViewController 149 | 150 | 151 | 152 | 46 153 | 154 | 155 | 156 | delegate 157 | 158 | 159 | 160 | 49 161 | 162 | 163 | 164 | 165 | 166 | 0 167 | 168 | 169 | 170 | 171 | 172 | -1 173 | 174 | 175 | File's Owner 176 | 177 | 178 | -2 179 | 180 | 181 | 182 | 183 | 2 184 | 185 | 186 | 187 | 188 | 3 189 | 190 | 191 | 192 | 193 | 37 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 38 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 39 212 | 213 | 214 | 215 | 216 | 40 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 41 225 | 226 | 227 | 228 | 229 | 42 230 | 231 | 232 | 233 | 234 | 235 | 236 | UIApplication 237 | UIResponder 238 | {{190, 57}, {783, 799}} 239 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 240 | EditableTableViewCellsAppDelegate 241 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 242 | {{794, 594}, {1024, 768}} 243 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 244 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 245 | DetailViewController 246 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 247 | RootViewController 248 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 249 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 250 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 251 | 252 | 253 | 254 | 255 | 256 | 49 257 | 258 | 259 | 260 | 261 | DetailViewController 262 | UIViewController 263 | 264 | id 265 | UINavigationBar 266 | 267 | 268 | IBProjectSource 269 | Classes/DetailViewController.h 270 | 271 | 272 | 273 | RootViewController 274 | UITableViewController 275 | 276 | detailViewController 277 | DetailViewController 278 | 279 | 280 | IBProjectSource 281 | Classes/RootViewController.h 282 | 283 | 284 | 285 | RootViewController 286 | UITableViewController 287 | 288 | IBUserSource 289 | 290 | 291 | 292 | 293 | EditableTableViewCellsAppDelegate 294 | NSObject 295 | 296 | DetailViewController 297 | RootViewController 298 | UISplitViewController 299 | UIWindow 300 | 301 | 302 | IBProjectSource 303 | Classes/EditableTableViewCellsAppDelegate.h 304 | 305 | 306 | 307 | 308 | 309 | NSObject 310 | 311 | IBFrameworkSource 312 | Foundation.framework/Headers/NSError.h 313 | 314 | 315 | 316 | NSObject 317 | 318 | IBFrameworkSource 319 | Foundation.framework/Headers/NSFileManager.h 320 | 321 | 322 | 323 | NSObject 324 | 325 | IBFrameworkSource 326 | Foundation.framework/Headers/NSKeyValueCoding.h 327 | 328 | 329 | 330 | NSObject 331 | 332 | IBFrameworkSource 333 | Foundation.framework/Headers/NSKeyValueObserving.h 334 | 335 | 336 | 337 | NSObject 338 | 339 | IBFrameworkSource 340 | Foundation.framework/Headers/NSKeyedArchiver.h 341 | 342 | 343 | 344 | NSObject 345 | 346 | IBFrameworkSource 347 | Foundation.framework/Headers/NSNetServices.h 348 | 349 | 350 | 351 | NSObject 352 | 353 | IBFrameworkSource 354 | Foundation.framework/Headers/NSObject.h 355 | 356 | 357 | 358 | NSObject 359 | 360 | IBFrameworkSource 361 | Foundation.framework/Headers/NSPort.h 362 | 363 | 364 | 365 | NSObject 366 | 367 | IBFrameworkSource 368 | Foundation.framework/Headers/NSRunLoop.h 369 | 370 | 371 | 372 | NSObject 373 | 374 | IBFrameworkSource 375 | Foundation.framework/Headers/NSStream.h 376 | 377 | 378 | 379 | NSObject 380 | 381 | IBFrameworkSource 382 | Foundation.framework/Headers/NSThread.h 383 | 384 | 385 | 386 | NSObject 387 | 388 | IBFrameworkSource 389 | Foundation.framework/Headers/NSURL.h 390 | 391 | 392 | 393 | NSObject 394 | 395 | IBFrameworkSource 396 | Foundation.framework/Headers/NSURLConnection.h 397 | 398 | 399 | 400 | NSObject 401 | 402 | IBFrameworkSource 403 | Foundation.framework/Headers/NSXMLParser.h 404 | 405 | 406 | 407 | NSObject 408 | 409 | IBFrameworkSource 410 | UIKit.framework/Headers/UIAccessibility.h 411 | 412 | 413 | 414 | NSObject 415 | 416 | IBFrameworkSource 417 | UIKit.framework/Headers/UINibLoading.h 418 | 419 | 420 | 421 | NSObject 422 | 423 | IBFrameworkSource 424 | UIKit.framework/Headers/UIResponder.h 425 | 426 | 427 | 428 | UIApplication 429 | UIResponder 430 | 431 | IBFrameworkSource 432 | UIKit.framework/Headers/UIApplication.h 433 | 434 | 435 | 436 | UIBarButtonItem 437 | UIBarItem 438 | 439 | IBFrameworkSource 440 | UIKit.framework/Headers/UIBarButtonItem.h 441 | 442 | 443 | 444 | UIBarItem 445 | NSObject 446 | 447 | IBFrameworkSource 448 | UIKit.framework/Headers/UIBarItem.h 449 | 450 | 451 | 452 | UINavigationBar 453 | UIView 454 | 455 | IBFrameworkSource 456 | UIKit.framework/Headers/UINavigationBar.h 457 | 458 | 459 | 460 | UINavigationController 461 | UIViewController 462 | 463 | IBFrameworkSource 464 | UIKit.framework/Headers/UINavigationController.h 465 | 466 | 467 | 468 | UINavigationItem 469 | NSObject 470 | 471 | 472 | 473 | UIResponder 474 | NSObject 475 | 476 | 477 | 478 | UISearchBar 479 | UIView 480 | 481 | IBFrameworkSource 482 | UIKit.framework/Headers/UISearchBar.h 483 | 484 | 485 | 486 | UISearchDisplayController 487 | NSObject 488 | 489 | IBFrameworkSource 490 | UIKit.framework/Headers/UISearchDisplayController.h 491 | 492 | 493 | 494 | UISplitViewController 495 | UIViewController 496 | 497 | IBFrameworkSource 498 | UIKit.framework/Headers/UISplitViewController.h 499 | 500 | 501 | 502 | UITableViewController 503 | UIViewController 504 | 505 | IBFrameworkSource 506 | UIKit.framework/Headers/UITableViewController.h 507 | 508 | 509 | 510 | UIView 511 | 512 | IBFrameworkSource 513 | UIKit.framework/Headers/UITextField.h 514 | 515 | 516 | 517 | UIView 518 | UIResponder 519 | 520 | IBFrameworkSource 521 | UIKit.framework/Headers/UIView.h 522 | 523 | 524 | 525 | UIViewController 526 | 527 | 528 | 529 | UIViewController 530 | 531 | IBFrameworkSource 532 | UIKit.framework/Headers/UIPopoverController.h 533 | 534 | 535 | 536 | UIViewController 537 | 538 | 539 | 540 | UIViewController 541 | 542 | IBFrameworkSource 543 | UIKit.framework/Headers/UITabBarController.h 544 | 545 | 546 | 547 | UIViewController 548 | UIResponder 549 | 550 | IBFrameworkSource 551 | UIKit.framework/Headers/UIViewController.h 552 | 553 | 554 | 555 | UIWindow 556 | UIView 557 | 558 | IBFrameworkSource 559 | UIKit.framework/Headers/UIWindow.h 560 | 561 | 562 | 563 | 564 | 0 565 | IBIPadFramework 566 | 567 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 568 | 569 | 570 | 571 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 572 | 573 | 574 | YES 575 | EditableTableViewCells.xcodeproj 576 | 3 577 | 84 578 | 579 | 580 | -------------------------------------------------------------------------------- /main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // EditableTableViewCells 4 | // 5 | // Created by Jacques Fortier on 9/19/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) { 12 | 13 | NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | [pool release]; 16 | return retVal; 17 | } 18 | --------------------------------------------------------------------------------