Tim Hibbard avatar Tim Hibbard committed 61948c9

added load more button
hooked up long press on load more button

Comments (0)

Files changed (10)

Add a comment to this file

Christian FM.xcodeproj/project.xcworkspace/xcuserdata/timhibbard.xcuserdatad/UserInterfaceState.xcuserstate

Binary file modified.

Christian Radio Finder/Station.h

 @property (nonatomic) NSString *twitter;
 @property (nonatomic) NSString *facebook;
 @property (nonatomic) NSDecimalNumber *range;
+@property (nonatomic) NSDecimalNumber *signalStrength;
 @end

Christian Radio Finder/Station.m

 @dynamic twitter;
 @dynamic facebook;
 @dynamic range;
+@dynamic signalStrength;
 
 @end

Christian Radio Finder/StationDetailTableViewController.m

     [self setTitle:station.frequency];
    
     [freqCell.textLabel setText:[NSString stringWithFormat:@"%@ (%@)",station.frequency,station.callSign]];
+    [freqCell.textLabel setTextColor:[UIColor grayColor]];
+    [freqCell setUserInteractionEnabled:NO];
     [ownedByCell.textLabel setText:station.ownedBy];
     if ([station.website length]>0) {
         [ownedByCell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];

Christian Radio Finder/StationLookupManager.m

 
 
 - (void) getData:(double)gpsLat :(double)gpsLng : (NSInteger ) range :(void (^)(NSString *))executeOnFailure :(void (^)(NSMutableArray *))executeOnSuccess{
+    
     failure = executeOnFailure;
     success = executeOnSuccess;
     double delta = 1;
     
     if ([xmlParser parse]) {
         NSLog(@"No errors in xmlParser parse");
+        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
         success(stationArray);
     }
     else{
+        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
         NSLog(@"error error errror");
         failure(@"Could not parse XML");
     }

Christian Radio Finder/StationMapViewController.m

     if (gestureRecognizer.state != UIGestureRecognizerStateBegan){
         return;
     }
+
     
     isSearching = YES;
     
     MKPointAnnotation *pressPin = [[MKPointAnnotation alloc] init];
     [pressPin setCoordinate:touchLatLng];
     
-    [pressPin setTitle:@"Search location"];
+    [pressPin setTitle:@"Dropped Pin"];
     
     [map addAnnotation:pressPin];
     

Christian Radio Finder/StationTableViewController.h

     Owner,
     City,
     Distance,
-    Range
+    Range,
+    Strength
 } displayDetail;
 
+@property (nonatomic,retain) UILabel *loadMore;
 @property (nonatomic) NSManagedObjectContext *managedObjectContext;
 @property (nonatomic) NSMutableArray *stationArray;
 @property (nonatomic) CLLocationManager *locationManager;

Christian Radio Finder/StationTableViewController.m

 @synthesize selectionHasBeenMade;
 @synthesize rangeDelta;
 @synthesize displayInDetails;
+@synthesize loadMore;
 
 #define kCellHeight 44.0
 
 }
 
 - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
+
     if ([[segue identifier] isEqualToString:@"StationDetailSegue"]) {
         
         NSIndexPath *selectedRow = [self.tableView indexPathForSelectedRow];
 }
 
 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
-    return [stationArray count];
+    return [stationArray count] + 1;
 }
 
 - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
         [dateFormatter setDateFormat:@"h:mm.ss a"];
     }
     
+        
     StationCell *cell = (StationCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
     if (cell == nil) {
         cell = [[StationCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIdentifier];
-
     }
     
-    if (indexPath.row > stationArray.count) {
-        return nil;
-    }
+    UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc]
+                                                      initWithTarget:self action:@selector(longPress:)];
+    [cell addGestureRecognizer:longPressGesture];
     
     
+    if (indexPath.row == stationArray.count) {
+        [cell.textLabel setFont:[UIFont systemFontOfSize:17]];
+        [cell.textLabel setText:[NSString stringWithFormat:@"Click to extend search by %d miles",rangeDelta + 5]];
+        [cell setAccessoryType:UITableViewCellAccessoryNone];
+        [cell.textLabel setTextAlignment:UITextAlignmentCenter];
+        [cell.frequencyLabel setText:@""];
+        [cell.cityLabel setText:@""];
+        return cell;
+    }
+
     Station *station = [stationArray objectAtIndex:[indexPath row]];
     
+    [cell.textLabel setText:@""];
+    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
+    
     cell.frequencyLabel.text = station.frequency;
     if (station.ownedBy.length > 0) {
         cell.cityLabel.text = station.ownedBy;
         case Range:
             cell.cityLabel.text = [NSString stringWithFormat:@"%i mile range", (int)[station.range doubleValue]];
             break;
+        case Strength:
+        {
+            int displayStrength = (int)(station.signalStrength.doubleValue * 100);
+            if (displayStrength < 0) {
+                displayStrength = 0;
+            }
+            NSString *friendlyStrength;
+            if (displayStrength > 75) {
+                friendlyStrength = @"Excellent";
+            }
+            if (displayStrength > 50 && displayStrength < 75) {
+                friendlyStrength = @"Great";
+            }
+            if (displayStrength > 35 && displayStrength < 50) {
+                friendlyStrength = @"Good";
+            }
+            if (displayStrength > 10 && displayStrength < 35) {
+                friendlyStrength = @"Poor";
+            }
+            if (displayStrength < 10) {
+                friendlyStrength = @"Fringe";
+            }
+            if (displayStrength == 0) {
+                friendlyStrength = @"No";
+            }
+            //cell.cityLabel.text = [NSString stringWithFormat:@"%i%% signal", displayStrength ];
+            cell.cityLabel.text = [NSString stringWithFormat:@"%@ signal (%i%%)",friendlyStrength, displayStrength ];
+            //NSLog(@"value * 100:%lf",[station.signalStrength doubleValue] * 100);
+            //NSLog(@"value as int:%i",(int)([station.signalStrength doubleValue] * 100));
+            break;
+        }
         default:
             break;
     }
     
-    cell.callSignLabel.text = station.callSign;
-    cell.distanceLabel.text = station.distance;
     
-    UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc]
-      initWithTarget:self action:@selector(longPress:)] ;
-    [cell addGestureRecognizer:longPressGesture];
-
-
     return cell;
 }
 
     }
     StationCell *cell = (StationCell *)[gestureRecognizer view];
     NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
+    if (indexPath.row == stationArray.count) {
+        [cell.textLabel setText:[NSString stringWithFormat:@"Click to extend search by %d miles",rangeDelta + 20]];
+        rangeDelta = rangeDelta + 15;
+        if (self.pullTableView.pullTableIsLoadingMore == NO) {
+            self.pullTableView.pullTableIsLoadingMore = YES;
+            [self performSelector:@selector(loadMoreDataToTable) withObject:nil afterDelay:0.1f];
+        }
+        return;
+    }
     [self setSelectedRowIndex:indexPath.row];
-    NSLog(@"long press at index:%i",indexPath.row);
+    //NSLog(@"long press at index:%i",indexPath.row);
     [self performSegueWithIdentifier:@"ShowMapFromLongPressSegue" sender:self];
     
     
     }
     
     if (displayInDetails - 1 == -1) {
-        displayInDetails = 4;
+        displayInDetails = 5;
     }
     
     displayInDetails = displayInDetails - 1;
         displayInDetails = 0;
     }
     
-    if (displayInDetails + 1 == 4) {
+    if (displayInDetails + 1 == 5) {
         displayInDetails = -1;
     }
     
 }
 
 - (void) fetchByLocation{
+    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
+    
     locationManager = [[CLLocationManager alloc]init];
     locationManager.distanceFilter = kCLDistanceFilterNone;
     locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
             CLLocationDegrees lng = [newStation.lng doubleValue];
             CLLocation *radioLocation = [[CLLocation alloc] initWithLatitude:lat longitude:lng];
             CLLocationDistance distance = [newLocation distanceFromLocation:radioLocation] * 0.000621371192;
+            [newStation setSignalStrength:[[NSDecimalNumber alloc] initWithDouble:((newStation.range.doubleValue - distance)/newStation.range.doubleValue)] ];
+            //NSLog(@"strength=%@", newStation.signalStrength);
+
             [newStation setDistance:[NSString stringWithFormat:@"%d miles", (int) ceil(distance)]];
             if (distance <= [newStation.range doubleValue] + rangeDelta) {
                 //[xmlStationArray replaceObjectAtIndex:a withObject:newStation];
         [self setStationArray:bindableArray];
     }];
     
-    
+    [stationArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
+        Station *st1 = (Station *)obj1;
+        Station *st2 = (Station *)obj2;
+        
+        return [st2.signalStrength compare:st1.signalStrength];
+        
+    }];
         
         
     
     
     
-    [self performSelectorOnMainThread:@selector(refreshTableView) withObject:nil waitUntilDone:NO];
+    [self performSelectorOnMainThread:@selector(refreshTableView) withObject:nil waitUntilDone:YES];
     self.pullTableView.pullLastRefreshDate = [NSDate date];
     self.pullTableView.pullTableIsRefreshing = NO;
     self.pullTableView.pullTableIsLoadingMore = NO;
-    return;
-    
-    
-    NSEntityDescription *station = [NSEntityDescription entityForName:@"Station" inManagedObjectContext:managedObjectContext];
-    
-    NSFetchRequest *request = [[NSFetchRequest alloc] init];
-    [request setEntity:station];
-    
-    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"frequency" ascending:YES];
-    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
-    
-    [request setSortDescriptors:sortDescriptors];
-    
-    
-
-    [request setPredicate:[NSPredicate predicateWithFormat:@"(lat < %lf) AND (lat > %lf)  AND (lng > %lf) AND (lng < %lf)", GPSlat + delta, GPSlat - delta, GPSlng - delta, GPSlng + delta]];
-    
-    NSError *error;
-    NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
-    
-    if (!mutableFetchResults) {
-        //blow up
-    }
-    
-    //[self setStationArray:mutableFetchResults];
-    
-    for (int a = 0; a < [mutableFetchResults count]; a++) {    
-        Station *newStation = (Station *)[mutableFetchResults objectAtIndex:a];
-        CLLocationDegrees lat = [newStation.lat doubleValue];
-        CLLocationDegrees lng = [newStation.lng doubleValue];
-        CLLocation *radioLocation = [[CLLocation alloc] initWithLatitude:lat longitude:lng];
-        CLLocationDistance distance = [newLocation distanceFromLocation:radioLocation] * 0.000621371192;
-        [newStation setDistance:[NSString stringWithFormat:@"%d Miles", (int) ceil(distance)]]; 
-        [mutableFetchResults replaceObjectAtIndex:a withObject:newStation];
-    }
-    
-     
-    [self performSelectorOnMainThread:@selector(setStationArray:) withObject:mutableFetchResults waitUntilDone:YES];
-    
-    
-    [self performSelectorOnMainThread:@selector(refreshTableView) withObject:nil waitUntilDone:NO];
-
-
-    
 
 }
 
 - (void)pullTableViewDidTriggerRefresh:(PullTableView *)pullTableView
 {
     
-    [self performSelector:@selector(refreshTable) withObject:nil afterDelay:1.0f];
+    [self performSelector:@selector(refreshTable) withObject:nil afterDelay:0.1f];
 }
 
 - (void)pullTableViewDidTriggerLoadMore:(PullTableView *)pullTableView
 {
-    [self performSelector:@selector(loadMoreDataToTable) withObject:nil afterDelay:1.0f];
+    [self performSelector:@selector(loadMoreDataToTable) withObject:nil afterDelay:0.5f];
 }
 
 #pragma mark - Table view data source
      [self.navigationController pushViewController:detailViewController animated:YES];
      */
     
-
+    if (indexPath.row == stationArray.count) {
+        //[self loadMoreDataToTable];
+        if (self.pullTableView.pullTableIsLoadingMore == NO) {
+            self.pullTableView.pullTableIsLoadingMore = YES;
+            [self performSelector:@selector(loadMoreDataToTable) withObject:nil afterDelay:0.1f];
+        }
+    }
+    else{
+        [self performSegueWithIdentifier:@"StationDetailSegue" sender:tableView];
+    }
         
+
+
     if (selectionHasBeenMade && selectedRowIndex == indexPath.row) {
         selectionHasBeenMade = NO;
         selectedRowIndex = 0;

Christian Radio Finder/Stations.xcdatamodeld/Stations With Stream.xcdatamodel/contents

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1487" systemVersion="12A269" minimumToolsVersion="Xcode 4.1" macOSVersion="Automatic" iOSVersion="Automatic">
+<model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1487" systemVersion="12B19" minimumToolsVersion="Xcode 4.1" macOSVersion="Automatic" iOSVersion="Automatic">
     <entity name="Station" representedClassName="Station" syncable="YES">
         <attribute name="callSign" optional="YES" attributeType="String" syncable="YES"/>
         <attribute name="city" optional="YES" attributeType="String" syncable="YES"/>
         <attribute name="lng" optional="YES" attributeType="Decimal" defaultValueString="0.0" syncable="YES"/>
         <attribute name="ownedBy" optional="YES" attributeType="String" syncable="YES"/>
         <attribute name="range" optional="YES" attributeType="Decimal" defaultValueString="0.0" syncable="YES"/>
+        <attribute name="signalStrength" optional="YES" attributeType="Decimal" defaultValueString="0.0" syncable="YES"/>
         <attribute name="streamUrl" optional="YES" attributeType="String" syncable="YES"/>
         <attribute name="twitter" optional="YES" attributeType="String" syncable="YES"/>
         <attribute name="website" optional="YES" attributeType="String" syncable="YES"/>
     </entity>
     <elements>
-        <element name="Station" positionX="0" positionY="0" width="0" height="0"/>
+        <element name="Station" positionX="0" positionY="0" width="128" height="240"/>
     </elements>
 </model>

Christian Radio Finder/en.lproj/MainStoryboard_iPhone.storyboard

             <objects>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="dWo-un-Ova" userLabel="First Responder" sceneMemberID="firstResponder"/>
                 <tableViewController id="imJ-Rb-vIr" customClass="StationTableViewController" sceneMemberID="viewController">
-                    <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="45" sectionHeaderHeight="22" sectionFooterHeight="22" id="fEv-f8-grr" customClass="PullTableView">
+                    <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="fEv-f8-grr" customClass="PullTableView">
                         <rect key="frame" x="0.0" y="64" width="320" height="416"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                        <searchBar key="tableHeaderView" contentMode="redraw" placeholder="placeholder" showsSearchResultsButton="YES" showsBookmarkButton="YES" showsCancelButton="YES" id="pXM-KK-QSe">
+                            <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
+                            <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                            <textInputTraits key="textInputTraits"/>
+                            <scopeButtonTitles>
+                                <string>Title</string>
+                                <string>Title</string>
+                            </scopeButtonTitles>
+                        </searchBar>
                         <prototypes>
                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationWidth="0.0" reuseIdentifier="StationCell" rowHeight="45" id="zLs-it-ztM" customClass="StationCell">
-                                <rect key="frame" x="0.0" y="22" width="320" height="45"/>
+                                <rect key="frame" x="0.0" y="66" width="320" height="45"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
                                     <rect key="frame" x="0.0" y="0.0" width="300" height="44"/>
                                     <autoresizingMask key="autoresizingMask"/>
                                     <subviews>
-                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="freq" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="vLY-dP-9xY">
+                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="vLY-dP-9xY">
                                             <rect key="frame" x="20" y="11" width="95" height="21"/>
                                             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                             <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="owner/city" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="okl-Xe-04G">
+                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="okl-Xe-04G">
                                             <rect key="frame" x="103" y="11" width="177" height="21"/>
                                             <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                     <outlet property="cityLabel" destination="okl-Xe-04G" id="nTp-T6-sb2"/>
                                     <outlet property="distanceLabel" destination="kyI-b8-lfn" id="qzA-Tz-SpU"/>
                                     <outlet property="frequencyLabel" destination="vLY-dP-9xY" id="023-oI-NFu"/>
-                                    <segue destination="kca-X7-Fp3" kind="push" identifier="StationDetailSegue" id="Nzm-P2-FvI"/>
                                 </connections>
                             </tableViewCell>
                         </prototypes>
                         <outlet property="pullTableView" destination="fEv-f8-grr" id="K96-Ll-bqi"/>
                         <segue destination="eX2-ZJ-yyp" kind="push" identifier="ShowMapFromLongPressSegue" id="UIs-tl-QCd"/>
                         <segue destination="VvI-Zu-7m3" kind="push" identifier="ViewAllOnMapSegue" id="xr0-FB-zgJ"/>
+                        <segue destination="kca-X7-Fp3" kind="push" identifier="StationDetailSegue" id="Opu-Xs-6iV"/>
                     </connections>
                 </tableViewController>
                 <pongPressGestureRecognizer allowableMovement="10" minimumPressDuration="0.5" id="YNQ-lP-Qtt">
                     </connections>
                 </tableViewController>
             </objects>
-            <point key="canvasLocation" x="-1017" y="-81"/>
+            <point key="canvasLocation" x="-784" y="-310"/>
         </scene>
         <!--Navigation Controller - Item-->
         <scene sceneID="U2j-j4-VBq">
                                     <action selector="infoButtonPress:" destination="VvI-Zu-7m3" eventType="touchUpInside" id="6VP-Hr-f5P"/>
                                 </connections>
                             </button>
-                            <label hidden="YES" opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Press and hold on the map to find stations" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="onJ-Bl-Sat">
-                                <rect key="frame" x="0.0" y="367" width="309" height="21"/>
+                            <label hidden="YES" opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Press and hold to search" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="onJ-Bl-Sat">
+                                <rect key="frame" x="52" y="386" width="237" height="21"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                                <color key="backgroundColor" red="0.64705882349999999" green="0.74901960779999999" blue="0.86666666670000003" alpha="1" colorSpace="calibratedRGB"/>
                                 <fontDescription key="fontDescription" type="boldSystem" pointSize="21"/>
                                 <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
                                 <nil key="highlightedColor"/>
         <image name="f_logo.png" width="140" height="140"/>
         <image name="twitter-bird-light-bgs.png" width="300" height="300"/>
     </resources>
+    <classes>
+        <class className="AddNewStationViewController" superclassName="UIViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/AddNewStationViewController.h"/>
+            <relationships>
+                <relationship kind="action" name="submitButtonClicked:"/>
+                <relationship kind="outlet" name="callsignText" candidateClass="UITextField"/>
+                <relationship kind="outlet" name="facebookText" candidateClass="UITextField"/>
+                <relationship kind="outlet" name="freqText" candidateClass="UITextField"/>
+                <relationship kind="outlet" name="locationLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="stationNameText" candidateClass="UITextField"/>
+                <relationship kind="outlet" name="twitterText" candidateClass="UITextField"/>
+                <relationship kind="outlet" name="websiteText" candidateClass="UITextField"/>
+            </relationships>
+        </class>
+        <class className="CLLocationManager" superclassName="NSObject">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/CLLocationManager.h"/>
+        </class>
+        <class className="PullTableView" superclassName="UITableView">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/PullTableView.h"/>
+            <relationships>
+                <relationship kind="outlet" name="pullDelegate"/>
+            </relationships>
+        </class>
+        <class className="StationCell" superclassName="UITableViewCell">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/StationCell.h"/>
+            <relationships>
+                <relationship kind="outlet" name="callSignLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="cityLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="distanceLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="frequencyLabel" candidateClass="UILabel"/>
+            </relationships>
+        </class>
+        <class className="StationDetailTableViewController" superclassName="UITableViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/StationDetailTableViewController.h"/>
+            <relationships>
+                <relationship kind="action" name="shareButtonClicked:"/>
+                <relationship kind="outlet" name="facebookCell" candidateClass="UITableViewCell"/>
+                <relationship kind="outlet" name="freqCell" candidateClass="UITableViewCell"/>
+                <relationship kind="outlet" name="geoCell" candidateClass="UITableViewCell"/>
+                <relationship kind="outlet" name="ownedByCell" candidateClass="UITableViewCell"/>
+                <relationship kind="outlet" name="streamingCell" candidateClass="UITableViewCell"/>
+                <relationship kind="outlet" name="twitterCell" candidateClass="UITableViewCell"/>
+            </relationships>
+        </class>
+        <class className="StationDetailViewController" superclassName="UIViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/StationDetailViewController.h"/>
+            <relationships>
+                <relationship kind="action" name="shareButtonClicked:"/>
+                <relationship kind="outlet" name="displayView" candidateClass="UIView"/>
+                <relationship kind="outlet" name="distanceLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="map" candidateClass="MKMapView"/>
+            </relationships>
+        </class>
+        <class className="StationMapViewController" superclassName="UIViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/StationMapViewController.h"/>
+            <relationships>
+                <relationship kind="action" name="infoButtonPress:" candidateClass="UIButton"/>
+                <relationship kind="action" name="longPress:" candidateClass="UILongPressGestureRecognizer"/>
+                <relationship kind="outlet" name="infoLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="map" candidateClass="MKMapView"/>
+            </relationships>
+        </class>
+        <class className="StationTableViewController" superclassName="UITableViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/StationTableViewController.h"/>
+            <relationships>
+                <relationship kind="action" name="longPress:" candidateClass="UILongPressGestureRecognizer"/>
+                <relationship kind="action" name="shareButtonClicked:"/>
+                <relationship kind="action" name="swipeLeft:" candidateClass="UISwipeGestureRecognizer"/>
+                <relationship kind="action" name="swipeRight:" candidateClass="UISwipeGestureRecognizer"/>
+                <relationship kind="outlet" name="locationManager" candidateClass="CLLocationManager"/>
+                <relationship kind="outlet" name="pullTableView" candidateClass="PullTableView"/>
+            </relationships>
+        </class>
+        <class className="WebViewController" superclassName="UIViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/WebViewController.h"/>
+            <relationships>
+                <relationship kind="action" name="shareButtonClicked:"/>
+                <relationship kind="outlet" name="webView" candidateClass="UIWebView"/>
+            </relationships>
+        </class>
+    </classes>
     <simulatedMetricsContainer key="defaultSimulatedMetrics">
         <simulatedStatusBarMetrics key="statusBar"/>
         <simulatedOrientationMetrics key="orientation"/>
         <simulatedScreenMetrics key="destination"/>
     </simulatedMetricsContainer>
     <inferredMetricsTieBreakers>
+        <segue reference="UIs-tl-QCd"/>
+        <segue reference="DRz-EE-aMg"/>
         <segue reference="fZh-Gy-HOC"/>
-        <segue reference="Nzm-P2-FvI"/>
-        <segue reference="cGD-Co-tvt"/>
     </inferredMetricsTieBreakers>
 </document>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.