aboutsummaryrefslogtreecommitdiffstats
path: root/iBean
diff options
context:
space:
mode:
authorEddie Ehlin <eddiex@eddiex.se>2013-01-19 00:07:02 +0100
committerEddie Ehlin <eddiex@eddiex.se>2013-01-19 00:07:02 +0100
commit8ed55c1c7891d76ae15c155c0469253ca8fb3f34 (patch)
treeb7a74a2545ffca4ed423ef38e886df9013dddbab /iBean
parentac1de8f5356878226e38a45085a351dd9b7a8cef (diff)
downloadiBean-8ed55c1c7891d76ae15c155c0469253ca8fb3f34.tar.gz
iBean-8ed55c1c7891d76ae15c155c0469253ca8fb3f34.zip
Added custom UITableViewCell for displaying bean information + extraction view controller (stub).
Diffstat (limited to 'iBean')
-rw-r--r--iBean/iBean.xcodeproj/project.pbxproj20
-rw-r--r--iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstatebin34539 -> 36309 bytes
-rw-r--r--iBean/iBean.xcodeproj/xcuserdata/eddiex.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist15
-rw-r--r--iBean/iBean/BeanCell.h20
-rw-r--r--iBean/iBean/BeanCell.m36
-rw-r--r--iBean/iBean/BeanCollectionExtractionViewController.h26
-rw-r--r--iBean/iBean/BeanCollectionExtractionViewController.m96
-rw-r--r--iBean/iBean/BeanCollectionListViewController.m7
-rw-r--r--iBean/iBean/iPhoneStoryboard.storyboard122
9 files changed, 324 insertions, 18 deletions
diff --git a/iBean/iBean.xcodeproj/project.pbxproj b/iBean/iBean.xcodeproj/project.pbxproj
index 5775776..f809461 100644
--- a/iBean/iBean.xcodeproj/project.pbxproj
+++ b/iBean/iBean.xcodeproj/project.pbxproj
@@ -33,6 +33,8 @@
020C569916A49C5900D8224C /* Configuration.m in Sources */ = {isa = PBXBuildFile; fileRef = 020C569816A49C5900D8224C /* Configuration.m */; };
020C569C16A49C8300D8224C /* Configuration+Interface.m in Sources */ = {isa = PBXBuildFile; fileRef = 020C569B16A49C8300D8224C /* Configuration+Interface.m */; };
024F676D16A4A61D004A1201 /* InstantExtractionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 024F676C16A4A61D004A1201 /* InstantExtractionViewController.m */; };
+ 02E557AE16A9C1E40080FBBA /* BeanCollectionExtractionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 02E557AD16A9C1E40080FBBA /* BeanCollectionExtractionViewController.m */; };
+ 02E557B116A9CFB50080FBBA /* BeanCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 02E557B016A9CFB50080FBBA /* BeanCell.m */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@@ -80,6 +82,10 @@
020C569B16A49C8300D8224C /* Configuration+Interface.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Configuration+Interface.m"; sourceTree = "<group>"; };
024F676B16A4A61D004A1201 /* InstantExtractionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstantExtractionViewController.h; sourceTree = "<group>"; };
024F676C16A4A61D004A1201 /* InstantExtractionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InstantExtractionViewController.m; sourceTree = "<group>"; };
+ 02E557AC16A9C1E40080FBBA /* BeanCollectionExtractionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BeanCollectionExtractionViewController.h; sourceTree = "<group>"; };
+ 02E557AD16A9C1E40080FBBA /* BeanCollectionExtractionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BeanCollectionExtractionViewController.m; sourceTree = "<group>"; };
+ 02E557AF16A9CFB50080FBBA /* BeanCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BeanCell.h; sourceTree = "<group>"; };
+ 02E557B016A9CFB50080FBBA /* BeanCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BeanCell.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -176,6 +182,7 @@
020C55D31695C2C800D8224C /* iBean */ = {
isa = PBXGroup;
children = (
+ 02E557AA16A9C1B90080FBBA /* BeanCollectionExtraction */,
020C56081698F58900D8224C /* BeanCollectionList */,
020C56091698F59F00D8224C /* Step 1 - BeanCollectionInfo */,
020C56071698F4DC00D8224C /* Step 2 - BeanCollectionBeanList */,
@@ -259,6 +266,17 @@
name = "Step 4 - Extraction";
sourceTree = "<group>";
};
+ 02E557AA16A9C1B90080FBBA /* BeanCollectionExtraction */ = {
+ isa = PBXGroup;
+ children = (
+ 02E557AF16A9CFB50080FBBA /* BeanCell.h */,
+ 02E557B016A9CFB50080FBBA /* BeanCell.m */,
+ 02E557AC16A9C1E40080FBBA /* BeanCollectionExtractionViewController.h */,
+ 02E557AD16A9C1E40080FBBA /* BeanCollectionExtractionViewController.m */,
+ );
+ name = BeanCollectionExtraction;
+ sourceTree = "<group>";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -342,6 +360,8 @@
020C569916A49C5900D8224C /* Configuration.m in Sources */,
020C569C16A49C8300D8224C /* Configuration+Interface.m in Sources */,
024F676D16A4A61D004A1201 /* InstantExtractionViewController.m in Sources */,
+ 02E557AE16A9C1E40080FBBA /* BeanCollectionExtractionViewController.m in Sources */,
+ 02E557B116A9CFB50080FBBA /* BeanCell.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstate b/iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstate
index b35e28b..d93e807 100644
--- a/iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/iBean/iBean.xcodeproj/project.xcworkspace/xcuserdata/eddiex.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/iBean/iBean.xcodeproj/xcuserdata/eddiex.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/iBean/iBean.xcodeproj/xcuserdata/eddiex.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist
index 443de6d..05301bc 100644
--- a/iBean/iBean.xcodeproj/xcuserdata/eddiex.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist
+++ b/iBean/iBean.xcodeproj/xcuserdata/eddiex.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist
@@ -2,19 +2,4 @@
<Bucket
type = "1"
version = "1.0">
- <FileBreakpoints>
- <FileBreakpoint
- shouldBeEnabled = "Yes"
- ignoreCount = "0"
- continueAfterRunningActions = "No"
- filePath = "iBean/BeanCollectionInfoViewController.m"
- timestampString = "379890282.494638"
- startingColumnNumber = "9223372036854775807"
- endingColumnNumber = "9223372036854775807"
- startingLineNumber = "129"
- endingLineNumber = "129"
- landmarkName = "-initWithModeAndBeanCollection::"
- landmarkType = "5">
- </FileBreakpoint>
- </FileBreakpoints>
</Bucket>
diff --git a/iBean/iBean/BeanCell.h b/iBean/iBean/BeanCell.h
new file mode 100644
index 0000000..f244eab
--- /dev/null
+++ b/iBean/iBean/BeanCell.h
@@ -0,0 +1,20 @@
+//
+// BeanCell.h
+// iBean
+//
+// Created by Eddie Ehlin on 2013-01-18.
+// Copyright (c) 2013 Eddie Ehlin. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface BeanCell : UITableViewCell
+@property (weak, nonatomic) IBOutlet UIImageView *beanImageLeft;
+@property (weak, nonatomic) IBOutlet UILabel *beanNameLabel;
+@property (weak, nonatomic) IBOutlet UILabel *beanGrindSettingLabel;
+@property (weak, nonatomic) IBOutlet UIImageView *beanImageRight;
+@property (weak, nonatomic) IBOutlet UILabel *beanAmountLabel;
+
+
+- (void) initWithNameGrindSettingAndAmount: (NSString*) name: (NSNumber*)grindSetting: (NSNumber*) amount;
+@end
diff --git a/iBean/iBean/BeanCell.m b/iBean/iBean/BeanCell.m
new file mode 100644
index 0000000..cc5f663
--- /dev/null
+++ b/iBean/iBean/BeanCell.m
@@ -0,0 +1,36 @@
+//
+// BeanCell.m
+// iBean
+//
+// Created by Eddie Ehlin on 2013-01-18.
+// Copyright (c) 2013 Eddie Ehlin. All rights reserved.
+//
+
+#import "BeanCell.h"
+
+@implementation BeanCell
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+ if (self) {
+ // Initialization code
+ }
+ return self;
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated
+{
+ [super setSelected:selected animated:animated];
+
+ // Configure the view for the selected state
+}
+
+- (void) initWithNameGrindSettingAndAmount: (NSString*) name: (NSNumber*)grindSetting: (NSNumber*) amount
+{
+ self.beanNameLabel.text = name;
+ self.beanGrindSettingLabel.text = [NSString stringWithFormat:@"%@", grindSetting];
+ self.beanAmountLabel.text = [NSString stringWithFormat:@"%1.1f g", [amount doubleValue]];
+}
+
+@end
diff --git a/iBean/iBean/BeanCollectionExtractionViewController.h b/iBean/iBean/BeanCollectionExtractionViewController.h
new file mode 100644
index 0000000..4f7a608
--- /dev/null
+++ b/iBean/iBean/BeanCollectionExtractionViewController.h
@@ -0,0 +1,26 @@
+//
+// BeanCollectionExtractionViewController.h
+// iBean
+//
+// Created by Eddie Ehlin on 2013-01-18.
+// Copyright (c) 2013 Eddie Ehlin. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+@class BeanCollection;
+
+@interface BeanCollectionExtractionViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
+
+@property (nonatomic, strong) BeanCollection *beanCollection;
+
+/* Utility methods */
+- (void) initViewController;
+- (void) initWithBeanCollection:(BeanCollection*) bc;
+
+/* UI Outlets */
+@property (weak, nonatomic) IBOutlet UITableView *beanTableView;
+
+/* UI Actions */
+
+
+@end
diff --git a/iBean/iBean/BeanCollectionExtractionViewController.m b/iBean/iBean/BeanCollectionExtractionViewController.m
new file mode 100644
index 0000000..e89324c
--- /dev/null
+++ b/iBean/iBean/BeanCollectionExtractionViewController.m
@@ -0,0 +1,96 @@
+//
+// BeanCollectionExtractionViewController.m
+// iBean
+//
+// Created by Eddie Ehlin on 2013-01-18.
+// Copyright (c) 2013 Eddie Ehlin. All rights reserved.
+//
+
+#import "BeanCollectionExtractionViewController.h"
+#import "BeanCollection+Interface.h"
+#import "BeanCell.h"
+#import "Bean+Interface.h"
+
+@interface BeanCollectionExtractionViewController ()
+
+@end
+
+@implementation BeanCollectionExtractionViewController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+ if (self) {
+ // Custom initialization
+ }
+ return self;
+}
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+ // Do any additional setup after loading the view.
+}
+
+- (void)viewWillAppear:(BOOL)animated
+{
+ [super viewWillAppear:animated];
+ [self initViewController];
+}
+
+- (void)didReceiveMemoryWarning
+{
+ [super didReceiveMemoryWarning];
+ // Dispose of any resources that can be recreated.
+}
+
+/*****************************************************
+ Utility methods
+ *****************************************************/
+#pragma mark - Utility methods
+- (void) initViewController
+{
+ NSLog(@"BeanCollectionExtraction - initViewController");
+ self.navigationItem.title = self.beanCollection.name;
+}
+
+- (void) initWithBeanCollection:(BeanCollection *)bc
+{
+ self.beanCollection = bc;
+
+}
+
+/*****************************************************
+ UI Actions
+ *****************************************************/
+#pragma mark - UI action methods
+
+/*****************************************************
+ Delegates
+ *****************************************************/
+#pragma mark - UITableViewDelegate & datasource
+
+- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
+{
+ return 1;
+}
+
+- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+ return self.beanCollection.beans.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ static NSString *CellIdentifier = @"BeanCell";
+ BeanCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+
+ //Configure the cell and set its title
+ Bean *currentBean = [self.beanCollection.beans objectAtIndex:indexPath.row];
+
+ [cell initWithNameGrindSettingAndAmount:currentBean.name :currentBean.grindSetting :currentBean.amount];
+
+ return cell;
+}
+
+@end
diff --git a/iBean/iBean/BeanCollectionListViewController.m b/iBean/iBean/BeanCollectionListViewController.m
index 5bb9b44..6c0f46c 100644
--- a/iBean/iBean/BeanCollectionListViewController.m
+++ b/iBean/iBean/BeanCollectionListViewController.m
@@ -8,6 +8,7 @@
#import "BeanCollectionListViewController.h"
#import "BeanCollectionInfoViewController.h"
+#import "BeanCollectionExtractionViewController.h"
#import "BeanCollection.h"
#import "AppDelegate+Storage.h"
@@ -56,12 +57,12 @@
self.beanCollection = [(AppDelegate*) [[UIApplication sharedApplication] delegate] createBeanCollection];
[infoViewController initWithModeAndBeanCollection:NO :self.beanCollection];
}
- else if ([segue.identifier isEqualToString:@"ViewBeanCollectionInfoSegue"])
+ else if ([segue.identifier isEqualToString:@"BeanCollectionListBeanCollectionExtractionSegue"])
{
//Tell the view controller that we'll be handling/viewing an existing bean collection
- BeanCollectionInfoViewController *infoViewController = segue.destinationViewController;
+ BeanCollectionExtractionViewController *extractionViewController = segue.destinationViewController;
self.beanCollection = [self.beanCollections objectAtIndex:[self.tableView indexPathForSelectedRow].row];
- [infoViewController initWithModeAndBeanCollection:YES :self.beanCollection];
+ [extractionViewController initWithBeanCollection: self.beanCollection];
}
}
diff --git a/iBean/iBean/iPhoneStoryboard.storyboard b/iBean/iBean/iPhoneStoryboard.storyboard
index 358e404..f496545 100644
--- a/iBean/iBean/iPhoneStoryboard.storyboard
+++ b/iBean/iBean/iPhoneStoryboard.storyboard
@@ -28,6 +28,9 @@
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
+ <connections>
+ <segue destination="aA5-tc-vwr" kind="push" identifier="BeanCollectionListBeanCollectionExtractionSegue" id="QRH-Pr-UBY"/>
+ </connections>
</tableViewCell>
</prototypes>
<sections/>
@@ -630,6 +633,109 @@
</objects>
<point key="canvasLocation" x="1749" y="403"/>
</scene>
+ <!--Bean Collection Extraction View Controller-->
+ <scene sceneID="FPd-MK-Ops">
+ <objects>
+ <viewController id="aA5-tc-vwr" customClass="BeanCollectionExtractionViewController" sceneMemberID="viewController">
+ <view key="view" contentMode="scaleToFill" id="Wfz-bK-fv9">
+ <rect key="frame" x="0.0" y="64" width="320" height="455"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="none" allowsSelection="NO" rowHeight="60" sectionHeaderHeight="10" sectionFooterHeight="10" translatesAutoresizingMaskIntoConstraints="NO" id="nNM-14-LcQ">
+ <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="265" id="MZh-YD-ebb"/>
+ </constraints>
+ <prototypes>
+ <tableViewCell contentMode="scaleToFill" selectionStyle="blue" indentationWidth="10" reuseIdentifier="BeanCell" rowHeight="60" id="GFY-k6-GqL" customClass="BeanCell">
+ <rect key="frame" x="0.0" y="46" width="320" height="61"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+ <rect key="frame" x="10" y="1" width="300" height="59"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="k5L-1w-O9k">
+ <constraints>
+ <constraint firstAttribute="height" constant="43" id="U2T-ao-Szq"/>
+ <constraint firstAttribute="width" constant="48" id="V9C-sk-j6i"/>
+ </constraints>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Bean name" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6BI-CV-5ED">
+ <constraints>
+ <constraint firstAttribute="width" constant="149" id="R75-YN-6cj"/>
+ <constraint firstAttribute="height" constant="21" id="cPO-Kr-w2I"/>
+ </constraints>
+ <fontDescription key="fontDescription" type="system" pointSize="15"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Grind setting" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SEv-Mc-lOV">
+ <constraints>
+ <constraint firstAttribute="height" constant="21" id="aa2-WE-QFC"/>
+ </constraints>
+ <fontDescription key="fontDescription" type="system" pointSize="12"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Amount" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xmw-e4-noZ">
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
+ <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </label>
+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2GK-CS-zgy">
+ <constraints>
+ <constraint firstAttribute="height" constant="59" id="DQy-8I-fQ4"/>
+ <constraint firstAttribute="width" constant="87" id="ERq-Fo-mp1"/>
+ </constraints>
+ </imageView>
+ </subviews>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ <constraints>
+ <constraint firstAttribute="trailing" secondItem="Xmw-e4-noZ" secondAttribute="trailing" constant="30" id="1K7-bD-fde"/>
+ <constraint firstItem="2GK-CS-zgy" firstAttribute="leading" secondItem="SEv-Mc-lOV" secondAttribute="trailing" constant="8" symbolic="YES" type="default" id="2VR-qW-jA5"/>
+ <constraint firstItem="Xmw-e4-noZ" firstAttribute="top" secondItem="GFY-k6-GqL" secondAttribute="top" constant="19" id="3Qi-cA-7pg"/>
+ <constraint firstItem="2GK-CS-zgy" firstAttribute="top" secondItem="GFY-k6-GqL" secondAttribute="top" constant="1" id="43d-zJ-99N"/>
+ <constraint firstItem="6BI-CV-5ED" firstAttribute="leading" secondItem="k5L-1w-O9k" secondAttribute="trailing" constant="8" symbolic="YES" type="default" id="4Kv-4c-Gvf"/>
+ <constraint firstItem="k5L-1w-O9k" firstAttribute="leading" secondItem="GFY-k6-GqL" secondAttribute="leading" constant="10" id="8Uv-2a-9so"/>
+ <constraint firstItem="SEv-Mc-lOV" firstAttribute="leading" secondItem="k5L-1w-O9k" secondAttribute="trailing" constant="8" symbolic="YES" type="default" id="8f2-UX-Sae"/>
+ <constraint firstItem="k5L-1w-O9k" firstAttribute="centerY" secondItem="2GK-CS-zgy" secondAttribute="centerY" type="default" id="NTN-Lv-EKt"/>
+ <constraint firstItem="2GK-CS-zgy" firstAttribute="leading" secondItem="6BI-CV-5ED" secondAttribute="trailing" constant="8" symbolic="YES" type="default" id="PUO-UO-1ph"/>
+ <constraint firstItem="6BI-CV-5ED" firstAttribute="top" secondItem="k5L-1w-O9k" secondAttribute="top" type="default" id="duo-SS-MKg"/>
+ <constraint firstItem="SEv-Mc-lOV" firstAttribute="bottom" secondItem="k5L-1w-O9k" secondAttribute="bottom" type="default" id="fZo-8g-3Tu"/>
+ </constraints>
+ <connections>
+ <outlet property="beanAmountLabel" destination="Xmw-e4-noZ" id="yOh-Jm-eCd"/>
+ <outlet property="beanGrindSettingLabel" destination="SEv-Mc-lOV" id="bmF-mE-K60"/>
+ <outlet property="beanImageLeft" destination="k5L-1w-O9k" id="PTO-SU-myY"/>
+ <outlet property="beanImageRight" destination="2GK-CS-zgy" id="MVl-xR-hyY"/>
+ <outlet property="beanNameLabel" destination="6BI-CV-5ED" id="frx-6h-S3f"/>
+ </connections>
+ </tableViewCell>
+ </prototypes>
+ <connections>
+ <outlet property="dataSource" destination="aA5-tc-vwr" id="0Ql-EZ-yrJ"/>
+ <outlet property="delegate" destination="aA5-tc-vwr" id="Xh6-L2-tMD"/>
+ </connections>
+ </tableView>
+ </subviews>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ <constraints>
+ <constraint firstItem="nNM-14-LcQ" firstAttribute="leading" secondItem="Wfz-bK-fv9" secondAttribute="leading" type="default" id="Wqq-SO-grV"/>
+ <constraint firstItem="nNM-14-LcQ" firstAttribute="top" secondItem="Wfz-bK-fv9" secondAttribute="top" type="default" id="g4Q-jg-4CN"/>
+ <constraint firstItem="nNM-14-LcQ" firstAttribute="trailing" secondItem="Wfz-bK-fv9" secondAttribute="trailing" type="default" id="gLN-37-rpr"/>
+ </constraints>
+ </view>
+ <navigationItem key="navigationItem" id="nKM-NZ-clm">
+ <barButtonItem key="rightBarButtonItem" systemItem="edit" id="ikw-nF-0l3"/>
+ </navigationItem>
+ <connections>
+ <outlet property="beanTableView" destination="nNM-14-LcQ" id="fOr-10-Kts"/>
+ </connections>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="ZA6-Ra-Cp0" userLabel="First Responder" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="1285" y="1120"/>
+ </scene>
</scenes>
<classes>
<class className="AddBeanViewController" superclassName="UIViewController">
@@ -647,6 +753,16 @@
<relationship kind="outlet" name="grinderSettingStepper" candidateClass="UIStepper"/>
</relationships>
</class>
+ <class className="BeanCell" superclassName="UITableViewCell">
+ <source key="sourceIdentifier" type="project" relativePath="./Classes/BeanCell.h"/>
+ <relationships>
+ <relationship kind="outlet" name="beanAmountLabel" candidateClass="UILabel"/>
+ <relationship kind="outlet" name="beanGrindSettingLabel" candidateClass="UILabel"/>
+ <relationship kind="outlet" name="beanImageLeft" candidateClass="UIImageView"/>
+ <relationship kind="outlet" name="beanImageRight" candidateClass="UIImageView"/>
+ <relationship kind="outlet" name="beanNameLabel" candidateClass="UILabel"/>
+ </relationships>
+ </class>
<class className="BeanCollectionBeanListViewController" superclassName="UIViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/BeanCollectionBeanListViewController.h"/>
<relationships>
@@ -656,6 +772,12 @@
<relationship kind="outlet" name="beanListTableView" candidateClass="UITableView"/>
</relationships>
</class>
+ <class className="BeanCollectionExtractionViewController" superclassName="UIViewController">
+ <source key="sourceIdentifier" type="project" relativePath="./Classes/BeanCollectionExtractionViewController.h"/>
+ <relationships>
+ <relationship kind="outlet" name="beanTableView" candidateClass="UITableView"/>
+ </relationships>
+ </class>
<class className="BeanCollectionInfoViewController" superclassName="UIViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/BeanCollectionInfoViewController.h"/>
<relationships>