Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Created a root examples index view, in preparation for introducing ot…

…her examples.

Naturally, the examples controller uses a really simple table model that loads the
examples from a plist. Most of the boilerplate (notifying, keeping references to
listeners and the cell provider) have been moved into the first pass at an abstract
table model in the LRTableModel package.
  • Loading branch information...
commit 0ef65e077d588ef9d9194a076954079addf960c0 1 parent 53a0572
@lukeredpath authored
View
23 Classes/ExamplesIndexViewController.h
@@ -0,0 +1,23 @@
+//
+// ExamplesIndexViewController.h
+// TableViewModel
+//
+// Created by Luke Redpath on 10/08/2010.
+// Copyright 2010 LJR Software Limited. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "LRAbstractTableModel.h"
+
+@interface ExamplesTableModel : LRAbstractTableModel
+{
+ NSArray *examples;
+}
+- (void)loadExamplesFromPlistNamed:(NSString *)plistName inBundle:(NSBundle *)bundle;
+@end
+
+@interface ExamplesIndexViewController : UITableViewController <LRTableModelEventListener, LRTableModelCellProvider> {
+ ExamplesTableModel *examplesTableModel;
+}
+@property (nonatomic, readonly) ExamplesTableModel *examplesTableModel;
+@end
View
115 Classes/ExamplesIndexViewController.m
@@ -0,0 +1,115 @@
+//
+// ExamplesIndexViewController.m
+// TableViewModel
+//
+// Created by Luke Redpath on 10/08/2010.
+// Copyright 2010 LJR Software Limited. All rights reserved.
+//
+
+#import "ExamplesIndexViewController.h"
+#import "LRTableModelEvent.h"
+
+@implementation ExamplesTableModel
+
+- (id)initWithCellProvider:(id <LRTableModelCellProvider>)theCellProvider
+{
+ if (self = [super initWithCellProvider:theCellProvider]) {
+ examples = [[NSMutableArray alloc] init];
+ }
+ return self;
+}
+
+- (void)dealloc
+{
+ [examples release];
+ [super dealloc];
+}
+
+- (void)loadExamplesFromPlistNamed:(NSString *)plistName inBundle:(NSBundle *)bundle
+{
+ examples = [[NSArray arrayWithContentsOfFile:[bundle pathForResource:plistName ofType:@"plist"]] retain];
+ [self notifyListeners:[LRTableModelEvent refreshed]];
+}
+
+- (NSInteger)numberOfSections;
+{
+ return 1;
+}
+
+- (NSInteger)numberOfRows;
+{
+ return [examples count];
+}
+
+- (id)objectAtIndexPath:(NSIndexPath *)indexPath;
+{
+ return [examples objectAtIndex:indexPath.row];
+}
+
+@end
+
+@implementation ExamplesIndexViewController
+
+- (void)dealloc
+{
+ [examplesTableModel release];
+ [super dealloc];
+}
+
+- (ExamplesTableModel *)examplesTableModel
+{
+ if (examplesTableModel == nil) {
+ examplesTableModel = [[ExamplesTableModel alloc] initWithCellProvider:self];
+ [examplesTableModel addTableModelListener:self];
+ }
+ return examplesTableModel;
+}
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+
+ self.tableView.rowHeight = 65;
+ self.tableView.dataSource = self.examplesTableModel;
+
+ [self.examplesTableModel loadExamplesFromPlistNamed:@"Examples" inBundle:[NSBundle mainBundle]];
+}
+
+#pragma mark -
+#pragma mark LRTableModel methods
+
+- (void)tableModelChanged:(LRTableModelEvent *)changeEvent
+{
+ [self.tableView reloadData];
+}
+
+- (NSString *)cellReuseIdentifierForIndexPath:(NSIndexPath *)indexPath
+{
+ return @"ExampleCell";
+}
+
+- (UITableViewCell *)cellForObjectAtIndexPath:(NSIndexPath *)indexPath reuseIdentifier:(NSString *)reuseIdentifier
+{
+ return [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier] autorelease];
+}
+
+- (void)configureCell:(UITableViewCell *)cell forObject:(id)object atIndexPath:(NSIndexPath *)indexPath
+{
+ cell.textLabel.text = [object valueForKey:@"name"];
+ cell.detailTextLabel.text = [object valueForKey:@"description"];
+ cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
+}
+
+#pragma mark -
+#pragma mark UITableViewDelegate
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ NSDictionary *exampleData = [self.examplesTableModel objectAtIndexPath:indexPath];
+
+ UIViewController *exampleViewController = [[NSClassFromString([exampleData valueForKey:@"controller"]) alloc] init];
+ [self.navigationController pushViewController:exampleViewController animated:YES];
+ [exampleViewController release];
+}
+
+@end
View
17 Classes/LRTableModel/LRAbstractTableModel.h
@@ -0,0 +1,17 @@
+//
+// LRAbstractTableModel.h
+// TableViewModel
+//
+// Created by Luke Redpath on 10/08/2010.
+// Copyright 2010 LJR Software Limited. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "LRTableModel.h"
+
+@interface LRAbstractTableModel : NSObject <LRTableModel> {
+ NSMutableArray *eventListeners;
+ id<LRTableModelCellProvider> cellProvider;
+}
+- (void)notifyListeners:(LRTableModelEvent *)event;
+@end
View
88 Classes/LRTableModel/LRAbstractTableModel.m
@@ -0,0 +1,88 @@
+//
+// LRAbstractTableModel.m
+// TableViewModel
+//
+// Created by Luke Redpath on 10/08/2010.
+// Copyright 2010 LJR Software Limited. All rights reserved.
+//
+
+#import "LRAbstractTableModel.h"
+
+
+@implementation LRAbstractTableModel
+
+- (id)initWithCellProvider:(id<LRTableModelCellProvider>)theCellProvider;
+{
+ if (self = [super init]) {
+ eventListeners = [[NSMutableArray alloc] init];
+ cellProvider = [theCellProvider retain];
+ }
+ return self;
+}
+
+- (void)dealloc
+{
+ [cellProvider release];
+ [eventListeners release];
+ [super dealloc];
+}
+
+- (void)notifyListeners:(LRTableModelEvent *)event;
+{
+ for (id<LRTableModelEventListener> listener in eventListeners) {
+ [listener tableModelChanged:event];
+ }
+}
+
+- (void)addTableModelListener:(id<LRTableModelEventListener>)listener;
+{
+ [eventListeners addObject:listener];
+}
+
+- (void)removeTableModelListener:(id<LRTableModelEventListener>)listener;
+{
+ [eventListeners removeObject:listener];
+}
+
+- (NSInteger)numberOfSections; // abstract
+{
+ return 1;
+}
+
+- (NSInteger)numberOfRows; // abstract
+{
+ return 0;
+}
+
+- (id)objectAtIndexPath:(NSIndexPath *)indexPath; // abstract
+{
+ return nil;
+}
+
+#pragma mark -
+#pragma mark UITableViewDataSource methods
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ NSString *reuseIdentifier = [cellProvider cellReuseIdentifierForIndexPath:indexPath];
+
+ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
+ if (cell == nil) {
+ cell = [cellProvider cellForObjectAtIndexPath:indexPath reuseIdentifier:reuseIdentifier];
+ }
+ [cellProvider configureCell:cell forObject:[self objectAtIndexPath:indexPath] atIndexPath:indexPath];
+
+ return cell;
+}
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+ return [self numberOfSections];
+}
+
+- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
+{
+ return [self numberOfRows];
+}
+
+@end
View
9 Classes/TableViewModelAppDelegate.h
@@ -8,11 +8,12 @@
#import <UIKit/UIKit.h>
-@interface TableViewModelAppDelegate : NSObject <UIApplicationDelegate> {
- UIWindow *window;
+@interface TableViewModelAppDelegate : NSObject <UIApplicationDelegate>
+{
+ UIWindow *window;
+ UINavigationController *navigationController;
}
-
@property (nonatomic, retain) IBOutlet UIWindow *window;
-
+@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@end
View
18 Classes/TableViewModelAppDelegate.m
@@ -12,17 +12,13 @@
@implementation TableViewModelAppDelegate
@synthesize window;
-
+@synthesize navigationController;
#pragma mark -
#pragma mark Application lifecycle
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-
- SimpleTableViewController *tableViewController = [[SimpleTableViewController alloc] initWithStyle:UITableViewStylePlain];
- self.window.rootViewController = [[[UINavigationController alloc] initWithRootViewController:tableViewController] autorelease];
- [tableViewController release];
-
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
[window makeKeyAndVisible];
return YES;
@@ -77,9 +73,11 @@ Free up as much memory as possible by purging cached data objects that can be re
}
-- (void)dealloc {
- [window release];
- [super dealloc];
+- (void)dealloc
+{
+ [navigationController release];
+ [window release];
+ [super dealloc];
}
View
14 Examples.plist
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<array>
+ <dict>
+ <key>name</key>
+ <string>SimpleTableModel</string>
+ <key>description</key>
+ <string>A basic, array-backed table model</string>
+ <key>controller</key>
+ <string>SimpleTableViewController</string>
+ </dict>
+</array>
+</plist>
View
375 MainWindow.xib
@@ -1,18 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
- <int key="IBDocument.SystemTarget">800</int>
- <string key="IBDocument.SystemVersion">10D540</string>
- <string key="IBDocument.InterfaceBuilderVersion">760</string>
+ <int key="IBDocument.SystemTarget">1024</int>
+ <string key="IBDocument.SystemVersion">10F569</string>
+ <string key="IBDocument.InterfaceBuilderVersion">788</string>
<string key="IBDocument.AppKitVersion">1038.29</string>
- <string key="IBDocument.HIToolboxVersion">460.00</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">81</string>
+ <string key="NS.object.0">117</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="2"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -41,11 +40,10 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIWindow" id="380026005">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">1316</int>
<object class="NSPSMatrix" key="NSFrameMatrix"/>
<string key="NSFrameSize">{320, 480}</string>
- <reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
@@ -56,6 +54,38 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIResizesToFullScreen">YES</bool>
</object>
+ <object class="IBUINavigationController" id="915634994">
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ <object class="IBUINavigationBar" key="IBUINavigationBar" id="59050348">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{0, 0}</string>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <bool key="IBUIMultipleTouchEnabled">YES</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="NSMutableArray" key="IBUIViewControllers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBUIViewController" id="550481333">
+ <object class="IBUINavigationItem" key="IBUINavigationItem" id="313773871">
+ <string key="IBUITitle">Example List</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <reference key="IBUIParentViewController" ref="915634994"/>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ </object>
+ </object>
+ </object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
@@ -76,6 +106,22 @@
</object>
<int key="connectionID">5</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">navigationController</string>
+ <reference key="source" ref="664661524"/>
+ <reference key="destination" ref="915634994"/>
+ </object>
+ <int key="connectionID">14</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">rootViewController</string>
+ <reference key="source" ref="380026005"/>
+ <reference key="destination" ref="915634994"/>
+ </object>
+ <int key="connectionID">15</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -110,6 +156,35 @@
<reference key="object" ref="427554174"/>
<reference key="parent" ref="0"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">10</int>
+ <reference key="object" ref="915634994"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="550481333"/>
+ <reference ref="59050348"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">11</int>
+ <reference key="object" ref="550481333"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="313773871"/>
+ </object>
+ <reference key="parent" ref="915634994"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">12</int>
+ <reference key="object" ref="59050348"/>
+ <reference key="parent" ref="915634994"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">13</int>
+ <reference key="object" ref="313773871"/>
+ <reference key="parent" ref="550481333"/>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -118,6 +193,12 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
+ <string>10.IBEditorWindowLastContentRect</string>
+ <string>10.IBPluginDependency</string>
+ <string>11.CustomClassName</string>
+ <string>11.IBPluginDependency</string>
+ <string>12.IBPluginDependency</string>
+ <string>13.IBPluginDependency</string>
<string>2.IBAttributePlaceholdersKey</string>
<string>2.IBEditorWindowLastContentRect</string>
<string>2.IBPluginDependency</string>
@@ -128,6 +209,12 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIApplication</string>
<string>UIResponder</string>
+ <string>{{0, 665}, {320, 480}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>ExamplesIndexViewController</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSMutableDictionary">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
@@ -157,17 +244,53 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">9</int>
+ <int key="maxID">15</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
+ <string key="className">ExamplesIndexViewController</string>
+ <string key="superclassName">UITableViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Classes/ExamplesIndexViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">TableViewModelAppDelegate</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">window</string>
- <string key="NS.object.0">UIWindow</string>
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>navigationController</string>
+ <string>window</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>UINavigationController</string>
+ <string>UIWindow</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>navigationController</string>
+ <string>window</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">navigationController</string>
+ <string key="candidateClassName">UINavigationController</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">window</string>
+ <string key="candidateClassName">UIWindow</string>
+ </object>
+ </object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
@@ -183,9 +306,237 @@
</object>
</object>
</object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="500047532">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIApplication</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIBarButtonItem</string>
+ <string key="superclassName">UIBarItem</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIBarButtonItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIBarItem</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIBarItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UINavigationBar</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="719322029">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINavigationBar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UINavigationController</string>
+ <string key="superclassName">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="902524069">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UINavigationItem</string>
+ <string key="superclassName">NSObject</string>
+ <reference key="sourceIdentifier" ref="719322029"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIResponder</string>
+ <string key="superclassName">NSObject</string>
+ <reference key="sourceIdentifier" ref="500047532"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchBar</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchDisplayController</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UITableViewController</string>
+ <string key="superclassName">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITableViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <reference key="sourceIdentifier" ref="902524069"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIWindow</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
+ </object>
+ </object>
+ </object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
+ <integer value="1024" key="NS.object.0"/>
+ </object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
@@ -193,6 +544,6 @@
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">TableViewModel.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
- <string key="IBCocoaTouchPluginVersion">81</string>
+ <string key="IBCocoaTouchPluginVersion">117</string>
</data>
</archive>
View
18 TableViewModel.xcodeproj/project.pbxproj
@@ -13,6 +13,10 @@
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; };
+ A32C9B8A1211B9C100BBE14A /* LRAbstractTableModel.m in Sources */ = {isa = PBXBuildFile; fileRef = A32C9B891211B9C100BBE14A /* LRAbstractTableModel.m */; };
+ A32C9BB81211BC5800BBE14A /* ExamplesIndexViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A32C9B861211B8E100BBE14A /* ExamplesIndexViewController.m */; };
+ A32C9BC11211BC6D00BBE14A /* LRAbstractTableModel.m in Sources */ = {isa = PBXBuildFile; fileRef = A32C9B891211B9C100BBE14A /* LRAbstractTableModel.m */; };
+ A32C9BCC1211BC8C00BBE14A /* Examples.plist in Resources */ = {isa = PBXBuildFile; fileRef = A32C9B9F1211BB6400BBE14A /* Examples.plist */; };
A3D492831210AB0C0076940C /* TestHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = A3D492821210AB0C0076940C /* TestHelper.m */; };
A3D4939B1210ACA60076940C /* libKiwi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A3D4938E1210AC440076940C /* libKiwi.a */; };
A3D4939D1210ACAF0076940C /* libMocky.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A3D4935B1210AC280076940C /* libMocky.a */; };
@@ -105,6 +109,11 @@
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
32CA4F630368D1EE00C91783 /* TableViewModel_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewModel_Prefix.pch; sourceTree = "<group>"; };
8D1107310486CEB800E47090 /* TableViewModel-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "TableViewModel-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
+ A32C9B851211B8E100BBE14A /* ExamplesIndexViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExamplesIndexViewController.h; sourceTree = "<group>"; };
+ A32C9B861211B8E100BBE14A /* ExamplesIndexViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExamplesIndexViewController.m; sourceTree = "<group>"; };
+ A32C9B881211B9C100BBE14A /* LRAbstractTableModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LRAbstractTableModel.h; sourceTree = "<group>"; };
+ A32C9B891211B9C100BBE14A /* LRAbstractTableModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LRAbstractTableModel.m; sourceTree = "<group>"; };
+ A32C9B9F1211BB6400BBE14A /* Examples.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Examples.plist; sourceTree = "<group>"; };
A3D492691210AA210076940C /* Tests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
A3D4926A1210AA210076940C /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = "<group>"; };
A3D492791210AA7E0076940C /* TestHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestHelper.h; sourceTree = "<group>"; };
@@ -158,6 +167,8 @@
A3D497F51210E0670076940C /* LRTableModel */,
1D3623240D0F684500981E51 /* TableViewModelAppDelegate.h */,
1D3623250D0F684500981E51 /* TableViewModelAppDelegate.m */,
+ A32C9B851211B8E100BBE14A /* ExamplesIndexViewController.h */,
+ A32C9B861211B8E100BBE14A /* ExamplesIndexViewController.m */,
);
path = Classes;
sourceTree = "<group>";
@@ -201,6 +212,7 @@
A3D494B51210BA4A0076940C /* repositories.plist */,
28AD733E0D9D9553002E5188 /* MainWindow.xib */,
8D1107310486CEB800E47090 /* TableViewModel-Info.plist */,
+ A32C9B9F1211BB6400BBE14A /* Examples.plist */,
);
name = Resources;
sourceTree = "<group>";
@@ -280,6 +292,8 @@
A3D497F81210E0670076940C /* LRTableModelEvent.h */,
A3D497F91210E0670076940C /* LRTableModelEvent.m */,
A3D497FA1210E0670076940C /* LRTableModelEventListener.h */,
+ A32C9B881211B9C100BBE14A /* LRAbstractTableModel.h */,
+ A32C9B891211B9C100BBE14A /* LRAbstractTableModel.m */,
);
path = LRTableModel;
sourceTree = "<group>";
@@ -426,6 +440,7 @@
files = (
28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */,
A3D494B61210BA4A0076940C /* repositories.plist in Resources */,
+ A32C9BCC1211BC8C00BBE14A /* Examples.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -465,6 +480,8 @@
A3D4980F1210E0990076940C /* SimpleObject.m in Sources */,
A3D498101210E0990076940C /* SimpleTableModel.m in Sources */,
A3D498141210E0A10076940C /* LRTableModelEvent.m in Sources */,
+ A32C9BB81211BC5800BBE14A /* ExamplesIndexViewController.m in Sources */,
+ A32C9BC11211BC6D00BBE14A /* LRAbstractTableModel.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -478,6 +495,7 @@
A3D498131210E0A10076940C /* LRTableModelEvent.m in Sources */,
A3D498171210E0A70076940C /* SimpleTableModel.m in Sources */,
A3D498181210E0AA0076940C /* SimpleObject.m in Sources */,
+ A32C9B8A1211B9C100BBE14A /* LRAbstractTableModel.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Please sign in to comment.
Something went wrong with that request. Please try again.