Added competitor and mark training view controller

This commit is contained in:
Raimund Wege
2017-09-11 11:30:58 +02:00
parent 163031ce97
commit aac5ded6f5
9 changed files with 423 additions and 64 deletions
@@ -329,7 +329,7 @@
C85DB82C1F31AB1A009559CE /* ForgotPasswordViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85DB82B1F31AB1A009559CE /* ForgotPasswordViewController.swift */; };
C85DB82E1F31D804009559CE /* SignUpController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85DB82D1F31D804009559CE /* SignUpController.swift */; };
C8603D511C52892A002B2F28 /* Acknowledgements.markdown in Resources */ = {isa = PBXBuildFile; fileRef = C8603D491C528832002B2F28 /* Acknowledgements.markdown */; };
C867BD091F4B0274007E78E0 /* TrainingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C867BD081F4B0274007E78E0 /* TrainingViewController.swift */; };
C867BD091F4B0274007E78E0 /* TrainingCompetitorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C867BD081F4B0274007E78E0 /* TrainingCompetitorViewController.swift */; };
C867BD0B1F4B0290007E78E0 /* CreateTrainingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C867BD0A1F4B0290007E78E0 /* CreateTrainingViewController.swift */; };
C867BD0D1F4B0A0E007E78E0 /* RegattaCoreDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C867BD0C1F4B0A0E007E78E0 /* RegattaCoreDataManager.swift */; };
C867BD0F1F4B0A4B007E78E0 /* TrainingCoreDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C867BD0E1F4B0A4B007E78E0 /* TrainingCoreDataManager.swift */; };
@@ -367,6 +367,7 @@
C8CF22A31F6194C600A01E0A /* RegattaCheckInController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CF22A21F6194C600A01E0A /* RegattaCheckInController.swift */; };
C8CF22A51F61965C00A01E0A /* TrainingCheckInController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CF22A41F61965C00A01E0A /* TrainingCheckInController.swift */; };
C8CF22A91F62780C00A01E0A /* CheckInDataCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CF22A81F62780C00A01E0A /* CheckInDataCollector.swift */; };
C8CF22AD1F668BAB00A01E0A /* TrainingMarkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CF22AC1F668BAB00A01E0A /* TrainingMarkViewController.swift */; };
C8D5E81D1D479FA800DA0D61 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C8D5E81C1D479FA800DA0D61 /* Main.storyboard */; };
C8E0BD0A1F39A08B002FCCA5 /* FormularViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E0BD091F39A08B002FCCA5 /* FormularViewController.swift */; };
C8E0BD0D1F39ADAD002FCCA5 /* KeychainPasswordItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E0BD0C1F39ADAD002FCCA5 /* KeychainPasswordItem.swift */; };
@@ -738,7 +739,7 @@
C85DB82D1F31D804009559CE /* SignUpController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignUpController.swift; sourceTree = "<group>"; };
C85FAA501D4F84460087C2A2 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
C8603D491C528832002B2F28 /* Acknowledgements.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = Acknowledgements.markdown; sourceTree = "<group>"; };
C867BD081F4B0274007E78E0 /* TrainingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrainingViewController.swift; sourceTree = "<group>"; };
C867BD081F4B0274007E78E0 /* TrainingCompetitorViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrainingCompetitorViewController.swift; sourceTree = "<group>"; };
C867BD0A1F4B0290007E78E0 /* CreateTrainingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateTrainingViewController.swift; sourceTree = "<group>"; };
C867BD0C1F4B0A0E007E78E0 /* RegattaCoreDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegattaCoreDataManager.swift; sourceTree = "<group>"; };
C867BD0E1F4B0A4B007E78E0 /* TrainingCoreDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrainingCoreDataManager.swift; sourceTree = "<group>"; };
@@ -777,6 +778,7 @@
C8CF22A21F6194C600A01E0A /* RegattaCheckInController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegattaCheckInController.swift; sourceTree = "<group>"; };
C8CF22A41F61965C00A01E0A /* TrainingCheckInController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrainingCheckInController.swift; sourceTree = "<group>"; };
C8CF22A81F62780C00A01E0A /* CheckInDataCollector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckInDataCollector.swift; sourceTree = "<group>"; };
C8CF22AC1F668BAB00A01E0A /* TrainingMarkViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrainingMarkViewController.swift; sourceTree = "<group>"; };
C8D5E81C1D479FA800DA0D61 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
C8D938B11EB9AFDB00B1B4BC /* CoreData 3.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "CoreData 3.xcdatamodel"; sourceTree = "<group>"; };
C8E0BD091F39A08B002FCCA5 /* FormularViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormularViewController.swift; sourceTree = "<group>"; };
@@ -1309,10 +1311,11 @@
C867BD071F4AFE79007E78E0 /* Training */ = {
isa = PBXGroup;
children = (
C867BD081F4B0274007E78E0 /* TrainingViewController.swift */,
C867BD081F4B0274007E78E0 /* TrainingCompetitorViewController.swift */,
C867BD0A1F4B0290007E78E0 /* CreateTrainingViewController.swift */,
C867BD101F4C44E5007E78E0 /* TrainingTableViewController.swift */,
C8E0D3031F5808E3001EEF5C /* TrainingTableViewCell.swift */,
C8CF22AC1F668BAB00A01E0A /* TrainingMarkViewController.swift */,
);
name = Training;
sourceTree = "<group>";
@@ -1978,7 +1981,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
C867BD091F4B0274007E78E0 /* TrainingViewController.swift in Sources */,
C867BD091F4B0274007E78E0 /* TrainingCompetitorViewController.swift in Sources */,
C85DB82A1F31AAFD009559CE /* LoginViewController.swift in Sources */,
C8F71EDA1D8691F700826DE4 /* AFHTTPRequestOperation.m in Sources */,
7F1875B31A10F1B800C25BE0 /* TrackingViewController.swift in Sources */,
@@ -2004,6 +2007,7 @@
C8F71EEE1D8691F700826DE4 /* UIProgressView+AFNetworking.m in Sources */,
C8CF22A91F62780C00A01E0A /* CheckInDataCollector.swift in Sources */,
C85DB82E1F31D804009559CE /* SignUpController.swift in Sources */,
C8CF22AD1F668BAB00A01E0A /* TrainingMarkViewController.swift in Sources */,
7F44095B19F65B5B0021BF22 /* CoreData.xcdatamodeld in Sources */,
C89C5FD01D06CF46002AAAD2 /* TrackingViewModeCell.swift in Sources */,
C8FF5B7C1EB8CF2C00CF9764 /* MarkData.swift in Sources */,
@@ -20,12 +20,12 @@ protocol CheckInTableViewControllerDelegate: class {
func checkInTableViewController(
_ controller: CheckInTableViewController,
prepareForSegue segue: UIStoryboardSegue,
andCompetitorCheckIn checkIn: CompetitorCheckIn)
andCompetitorCheckIn competitorCheckIn: CompetitorCheckIn)
func checkInTableViewController(
_ controller: CheckInTableViewController,
prepareForSegue segue: UIStoryboardSegue,
andMarkCheckIn checkIn: MarkCheckIn)
andMarkCheckIn markCheckIn: MarkCheckIn)
}
@@ -318,7 +318,7 @@
<scene sceneID="e3W-CJ-soQ">
<objects>
<navigationController storyboardIdentifier="rootViewController" id="pqQ-jd-OwW" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" translucent="NO" id="x3H-m5-yJB">
<navigationBar key="navigationBar" contentMode="scaleToFill" misplaced="YES" translucent="NO" id="x3H-m5-yJB">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
@@ -456,7 +456,7 @@
<scene sceneID="6Ty-cK-spl">
<objects>
<navigationController id="Pn3-0n-ZdQ" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" translucent="NO" id="McN-2f-sK6">
<navigationBar key="navigationBar" contentMode="scaleToFill" misplaced="YES" translucent="NO" id="McN-2f-sK6">
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
@@ -466,7 +466,7 @@
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Lo3-i9-FWc" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1977" y="-2507"/>
<point key="canvasLocation" x="1970" y="-3337"/>
</scene>
<!--Create Training View Controller-->
<scene sceneID="zai-sg-LQl">
@@ -557,12 +557,12 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="kAU-Am-SqM" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2737" y="-2507"/>
<point key="canvasLocation" x="2730" y="-3337"/>
</scene>
<!--Training View Controller-->
<!--Training Competitor View Controller-->
<scene sceneID="Zlq-oI-kok">
<objects>
<viewController storyboardIdentifier="TrainingViewController" id="smT-3p-ZYf" customClass="TrainingViewController" customModule="SAPTracker" customModuleProvider="target" sceneMemberID="viewController">
<viewController storyboardIdentifier="TrainingCompetitorViewController" id="smT-3p-ZYf" customClass="TrainingCompetitorViewController" customModule="SAPTracker" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="dS6-Pi-1JW"/>
<viewControllerLayoutGuide type="bottom" id="21h-Jd-SOp"/>
@@ -590,6 +590,7 @@
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="startTrackingButtonTapped:" destination="smT-3p-ZYf" eventType="touchUpInside" id="KSM-gG-Y7S"/>
<action selector="startTrackingButtonTapped:" destination="G3a-SV-Maf" eventType="touchUpInside" id="SFR-Rt-bll"/>
<action selector="startTrackingButtonTapped:" destination="dMx-RA-QpG" eventType="touchUpInside" id="bRI-BL-p1Q"/>
</connections>
@@ -615,13 +616,24 @@
<action selector="stopTrackingButtonTapped:" destination="eHd-jN-WkS" eventType="touchUpInside" id="CbI-vx-D3U"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Name Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="68H-E2-rnx">
<rect key="frame" x="129" y="290" width="117" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="22" id="WgF-06-lB0"/>
</constraints>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="21"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="IcA-7p-xnO" firstAttribute="top" secondItem="dS6-Pi-1JW" secondAttribute="bottom" constant="20" id="79z-P4-rrG"/>
<constraint firstItem="68H-E2-rnx" firstAttribute="centerX" secondItem="N8Q-Eb-vTK" secondAttribute="centerX" id="KcB-xe-4h1"/>
<constraint firstItem="21h-Jd-SOp" firstAttribute="top" secondItem="e6j-2H-QrX" secondAttribute="bottom" constant="20" id="M06-ZN-rJh"/>
<constraint firstItem="IcA-7p-xnO" firstAttribute="leading" secondItem="N8Q-Eb-vTK" secondAttribute="leading" constant="20" id="QUL-qN-oPm"/>
<constraint firstAttribute="trailing" secondItem="e6j-2H-QrX" secondAttribute="trailing" constant="20" id="YVj-G3-ayZ"/>
<constraint firstItem="68H-E2-rnx" firstAttribute="centerY" secondItem="N8Q-Eb-vTK" secondAttribute="centerY" id="sXL-Me-s1c"/>
<constraint firstItem="e6j-2H-QrX" firstAttribute="leading" secondItem="N8Q-Eb-vTK" secondAttribute="leading" constant="20" id="v4F-XR-tVW"/>
<constraint firstAttribute="trailing" secondItem="IcA-7p-xnO" secondAttribute="trailing" constant="20" id="wZG-Wc-bNU"/>
</constraints>
@@ -635,12 +647,14 @@
</userDefinedRuntimeAttributes>
</view>
<connections>
<outlet property="startTrackingButton" destination="e6j-2H-QrX" id="nhE-ml-oLW"/>
<outlet property="trainingNameLabel" destination="68H-E2-rnx" id="1p1-q8-8mJ"/>
<segue destination="I54-NN-JAf" kind="presentation" identifier="Tracking" id="gEw-ml-Ejg"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="b6N-3i-Dul" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1977" y="-1808"/>
<point key="canvasLocation" x="1978" y="-1810"/>
</scene>
<!--Training Table View Controller-->
<scene sceneID="EFQ-Uc-xDt">
@@ -808,7 +822,7 @@
<segue destination="dfN-Ch-vpm" kind="presentation" identifier="About" id="TEI-KO-T29"/>
<segue destination="4Fb-v3-mkB" kind="presentation" identifier="Settings" id="Xy1-6R-10o"/>
<segue destination="smT-3p-ZYf" kind="show" identifier="Competitor" id="VVV-tB-IvR"/>
<segue destination="smT-3p-ZYf" kind="show" identifier="Mark" id="ASm-Gm-LTi"/>
<segue destination="IkV-3c-dLR" kind="show" identifier="Mark" id="JpW-Ha-tNO"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="1Kb-cO-cLT" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -1372,7 +1386,7 @@
<scene sceneID="s4S-5p-4o1">
<objects>
<navigationController id="I54-NN-JAf" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" translucent="NO" id="Qb2-vc-6Pl">
<navigationBar key="navigationBar" contentMode="scaleToFill" misplaced="YES" translucent="NO" id="Qb2-vc-6Pl">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
@@ -1472,13 +1486,13 @@
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Status Title Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="r6d-OU-cRI">
<rect key="frame" x="20" y="15" width="134.5" height="23.5"/>
<rect key="frame" x="20" y="14.5" width="134.5" height="23.5"/>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Status Label" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="5Xu-6g-tqP">
<rect key="frame" x="259" y="15" width="96" height="23.5"/>
<rect key="frame" x="259" y="14.5" width="96" height="23.5"/>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="17"/>
<nil key="highlightedColor"/>
</label>
@@ -1504,13 +1518,13 @@
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Mode Title Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="Xww-rc-pOA">
<rect key="frame" x="20" y="15" width="130.5" height="23.5"/>
<rect key="frame" x="20" y="14.5" width="130.5" height="23.5"/>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Mode Label" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="tJY-RR-vpe">
<rect key="frame" x="262" y="15" width="93" height="23.5"/>
<rect key="frame" x="262" y="14.5" width="93" height="23.5"/>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="17"/>
<nil key="highlightedColor"/>
</label>
@@ -1536,13 +1550,13 @@
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="GPS Fixes Title Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="Ujw-jg-ilY">
<rect key="frame" x="20" y="15" width="161" height="23.5"/>
<rect key="frame" x="20" y="14.5" width="161" height="23.5"/>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="GPS Fixes Label" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="dz3-w7-CCh">
<rect key="frame" x="232" y="15" width="123" height="23.5"/>
<rect key="frame" x="232" y="14.5" width="123" height="23.5"/>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="17"/>
<nil key="highlightedColor"/>
</label>
@@ -1568,13 +1582,13 @@
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="GPS Accuracy Title Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="Z1d-5I-pbj">
<rect key="frame" x="20" y="15" width="191.5" height="23.5"/>
<rect key="frame" x="20" y="14.5" width="191.5" height="23.5"/>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="GPS Accuracy Label" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DiM-MR-SGV">
<rect key="frame" x="181.5" y="15" width="153.5" height="23.5"/>
<rect key="frame" x="181.5" y="14.5" width="153.5" height="23.5"/>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
@@ -1686,7 +1700,7 @@
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Value Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="48" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="mUm-EE-6Is" userLabel="Time Label">
<rect key="frame" x="3" y="244" width="369" height="98.5"/>
<rect key="frame" x="3" y="243.5" width="369" height="98.5"/>
<fontDescription key="fontDescription" name="OpenSans-Light" family="Open Sans" pointSize="72"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
@@ -1728,7 +1742,7 @@
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Value Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l5u-i3-029">
<rect key="frame" x="3" y="244" width="369" height="98.5"/>
<rect key="frame" x="3" y="243.5" width="369" height="98.5"/>
<fontDescription key="fontDescription" name="OpenSans-Light" family="Open Sans" pointSize="72"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
@@ -1769,7 +1783,7 @@
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Value Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sGK-xV-9a0">
<rect key="frame" x="3" y="244" width="369" height="98.5"/>
<rect key="frame" x="3" y="243.5" width="369" height="98.5"/>
<fontDescription key="fontDescription" name="OpenSans-Light" family="Open Sans" pointSize="72"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
@@ -2019,7 +2033,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="vvK-XG-FQT" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1582" y="2046"/>
<point key="canvasLocation" x="1582" y="2121"/>
</scene>
<!--Settings View Controller-->
<scene sceneID="yOw-OU-u8M">
@@ -2134,7 +2148,7 @@
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="4Fb-v3-mkB" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" translucent="NO" id="opw-zV-Qak">
<navigationBar key="navigationBar" contentMode="scaleToFill" misplaced="YES" translucent="NO" id="opw-zV-Qak">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
@@ -2152,7 +2166,7 @@
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="dfN-Ch-vpm" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" translucent="NO" id="IvG-lp-FEV">
<navigationBar key="navigationBar" contentMode="scaleToFill" misplaced="YES" translucent="NO" id="IvG-lp-FEV">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
@@ -2220,7 +2234,7 @@
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="Njg-ZD-Ycd" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" id="bNh-Bg-ROM">
<navigationBar key="navigationBar" contentMode="scaleToFill" misplaced="YES" id="bNh-Bg-ROM">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
@@ -2233,6 +2247,102 @@
</objects>
<point key="canvasLocation" x="2737" y="-1116"/>
</scene>
<!--Training Mark View Controller-->
<scene sceneID="Mys-dP-aQE">
<objects>
<viewController storyboardIdentifier="TrainingMarkViewController" id="IkV-3c-dLR" customClass="TrainingMarkViewController" customModule="SAPTracker" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="myM-oT-G3d"/>
<viewControllerLayoutGuide type="bottom" id="U4p-oA-QT1"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="ybT-0Q-H2L" customClass="GradientView" customModule="SAPTracker" customModuleProvider="target">
<rect key="frame" x="0.0" y="64" width="375" height="603"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1px-gI-O3d">
<rect key="frame" x="20" y="501" width="335" height="82"/>
<color key="backgroundColor" red="0.054901960780000002" green="0.46666666670000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="82" id="ZTd-z0-4ud">
<variation key="heightClass=compact" constant="62"/>
</constraint>
</constraints>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="21"/>
<state key="normal" title="Start Tracking Button">
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="1"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="startTrackingButtonTapped:" destination="dMx-RA-QpG" eventType="touchUpInside" id="ROG-Hj-lh9"/>
<action selector="startTrackingButtonTapped:" destination="IkV-3c-dLR" eventType="touchUpInside" id="eD0-gv-wEB"/>
<action selector="startTrackingButtonTapped:" destination="G3a-SV-Maf" eventType="touchUpInside" id="l3U-Dm-d2C"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="auN-7A-IFz">
<rect key="frame" x="20" y="20" width="335" height="82"/>
<color key="backgroundColor" red="0.80392156859999997" green="0.12549019610000001" blue="0.1058823529" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="82" id="f7K-7g-EDO"/>
</constraints>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="21"/>
<state key="normal" title="Stop Training Button">
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="5"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="stopTrackingButtonTapped:" destination="eHd-jN-WkS" eventType="touchUpInside" id="R2e-Xh-jLd"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Name Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="GU1-ro-ifJ">
<rect key="frame" x="129" y="290.5" width="117" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="22" id="DyJ-y6-cz0"/>
</constraints>
<fontDescription key="fontDescription" name="OpenSans" family="Open Sans" pointSize="21"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="auN-7A-IFz" secondAttribute="trailing" constant="20" id="5b3-qr-CCg"/>
<constraint firstItem="GU1-ro-ifJ" firstAttribute="centerY" secondItem="ybT-0Q-H2L" secondAttribute="centerY" id="Msd-UG-QCb"/>
<constraint firstItem="auN-7A-IFz" firstAttribute="top" secondItem="myM-oT-G3d" secondAttribute="bottom" constant="20" id="NJ5-i9-Uwr"/>
<constraint firstItem="1px-gI-O3d" firstAttribute="leading" secondItem="ybT-0Q-H2L" secondAttribute="leading" constant="20" id="dQf-w7-kHX"/>
<constraint firstItem="auN-7A-IFz" firstAttribute="leading" secondItem="ybT-0Q-H2L" secondAttribute="leading" constant="20" id="fpn-MI-CQW"/>
<constraint firstItem="U4p-oA-QT1" firstAttribute="top" secondItem="1px-gI-O3d" secondAttribute="bottom" constant="20" id="sjU-yi-3nj"/>
<constraint firstItem="GU1-ro-ifJ" firstAttribute="centerX" secondItem="ybT-0Q-H2L" secondAttribute="centerX" id="uY7-fM-oW0"/>
<constraint firstAttribute="trailing" secondItem="1px-gI-O3d" secondAttribute="trailing" constant="20" id="wD2-ct-TOJ"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="firstColor">
<color key="value" red="0.87058823529999996" green="0.94509803920000002" blue="0.94509803920000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="secondColor">
<color key="value" red="0.86274509799999999" green="0.89019607840000003" blue="0.92156862750000001" alpha="1" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
<connections>
<outlet property="startTrackingButton" destination="1px-gI-O3d" id="OWA-Ao-RGV"/>
<outlet property="trainingNameLabel" destination="GU1-ro-ifJ" id="9wI-5l-XLF"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="7zr-QD-wnW" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1970" y="-2582"/>
</scene>
</scenes>
<resources>
<image name="DE.png" width="64" height="64"/>
@@ -2245,10 +2355,9 @@
<image name="settings" width="22" height="22"/>
</resources>
<inferredMetricsTieBreakers>
<segue reference="fgS-yf-c3u"/>
<segue reference="TEI-KO-T29"/>
<segue reference="Xy1-6R-10o"/>
<segue reference="ASm-Gm-LTi"/>
<segue reference="dH2-8c-PlZ"/>
<segue reference="DI8-aY-hHi"/>
<segue reference="gEw-ml-Ejg"/>
</inferredMetricsTieBreakers>
<color key="tintColor" red="0.0" green="0.61568627450980395" blue="0.8784313725490196" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</document>
@@ -292,16 +292,14 @@ extension RegattaCheckInTableViewController: CheckInTableViewControllerDelegate
regattaCheckInTableViewCell.competitorLabel.text = checkIn.name
}
func checkInTableViewController(_ controller: CheckInTableViewController, prepareForSegue segue: UIStoryboardSegue, andCompetitorCheckIn checkIn: CompetitorCheckIn) {
func checkInTableViewController(_ controller: CheckInTableViewController, prepareForSegue segue: UIStoryboardSegue, andCompetitorCheckIn competitorCheckIn: CompetitorCheckIn) {
guard let competitorVC = segue.destination as? CompetitorViewController else { return }
guard let competitorCheckIn = segueCheckIn as? CompetitorCheckIn else { return }
competitorVC.competitorCheckIn = competitorCheckIn
competitorVC.coreDataManager = coreDataManager
}
func checkInTableViewController(_ controller: CheckInTableViewController, prepareForSegue segue: UIStoryboardSegue, andMarkCheckIn checkIn: MarkCheckIn) {
func checkInTableViewController(_ controller: CheckInTableViewController, prepareForSegue segue: UIStoryboardSegue, andMarkCheckIn markCheckIn: MarkCheckIn) {
guard let markVC = segue.destination as? MarkViewController else { return }
guard let markCheckIn = segueCheckIn as? MarkCheckIn else { return }
markVC.markCheckIn = markCheckIn
markVC.coreDataManager = coreDataManager
}
@@ -0,0 +1,130 @@
//
// TrainingCompetitorViewController.swift
// SAPTracker
//
// Created by Raimund Wege on 21.08.17.
// Copyright © 2017 com.sap.sailing. All rights reserved.
//
import UIKit
class TrainingCompetitorViewController: SessionViewController {
weak var competitorCheckIn: CompetitorCheckIn!
weak var coreDataManager: CoreDataManager!
@IBOutlet weak var trainingNameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
delegate = self
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
refresh()
}
// MARK: - Setup
fileprivate func setup() {
setupButtons()
setupLocalization()
setupNavigationBar()
}
fileprivate func setupButtons() {
startTrackingButton.setBackgroundImage(Images.GreenHighlighted, for: .highlighted)
}
fileprivate func setupLocalization() {
startTrackingButton.setTitle(Translation.CompetitorView.StartTrackingButton.Title.String, for: .normal)
}
fileprivate func setupNavigationBar() {
navigationItem.titleView = TitleView(title: competitorCheckIn.event.name, subtitle: competitorCheckIn.leaderboard.name)
navigationController?.navigationBar.setNeedsLayout()
}
// MARK: - Update
fileprivate func update() {
competitorSessionController.update { [weak self] in
self?.refresh()
}
}
// MARK: - Refresh
fileprivate func refresh() {
trainingNameLabel.text = competitorCheckIn.event.name
}
// MARK: - Actions
@IBAction func optionButtonTapped(_ sender: AnyObject) {
let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
if let popoverController = alertController.popoverPresentationController {
popoverController.barButtonItem = sender as? UIBarButtonItem
}
let settingsAction = UIAlertAction(title: Translation.SettingsView.Title.String, style: .default) { [weak self] action in
self?.performSegue(withIdentifier: Segue.Settings, sender: self)
}
let checkOutAction = UIAlertAction(title: Translation.CompetitorView.OptionSheet.CheckOutAction.Title.String, style: .default) { [weak self] action in
self?.checkOut()
}
let updateAction = UIAlertAction(title: Translation.CompetitorView.OptionSheet.UpdateAction.Title.String, style: .default) { [weak self] action in
self?.update()
}
let aboutAction = UIAlertAction(title: Translation.Common.Info.String, style: .default) { [weak self] action in
self?.performSegue(withIdentifier: Segue.About, sender: alertController)
}
let cancelAction = UIAlertAction(title: Translation.Common.Cancel.String, style: .cancel, handler: nil)
alertController.addAction(settingsAction)
alertController.addAction(checkOutAction)
alertController.addAction(updateAction)
alertController.addAction(aboutAction)
alertController.addAction(cancelAction)
present(alertController, animated: true, completion: nil)
}
// MARK: - Segues
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == Segue.Tracking) {
let trackingNC = segue.destination as! UINavigationController
let trackingVC = trackingNC.viewControllers[0] as! TrackingViewController
trackingVC.checkIn = competitorCheckIn
trackingVC.sessionController = competitorSessionController
}
}
// MARK: - Properties
fileprivate lazy var competitorSessionController: CompetitorSessionController = {
return CompetitorSessionController(checkIn: self.competitorCheckIn, coreDataManager: self.coreDataManager)
}()
}
// MARK: - SessionViewControllerDelegate
extension TrainingCompetitorViewController: SessionViewControllerDelegate {
func performCheckOut() {
competitorSessionController.checkOut { (withSuccess) in
self.performCheckOutCompleted(withSuccess: withSuccess)
}
}
fileprivate func performCheckOutCompleted(withSuccess: Bool) {
coreDataManager.deleteObject(object: competitorCheckIn)
coreDataManager.saveContext()
navigationController?.popViewController(animated: true)
}
func startTracking() throws {
try competitorSessionController.startTracking()
}
}
@@ -154,11 +154,12 @@ class TrainingController: NSObject {
let fleetName = "Default"
self.trainingRequestManager.postLeaderboardSetTrackingTime(leaderboardName: leaderboardName, raceColumnName: raceColumnName, fleetName: fleetName, success: {
self.trainingRequestManager.postLeaderboardStartTracking(leaderboardName: leaderboardName, raceColumnName: raceColumnName, fleetName: fleetName, success: {
self.trainingRequestManager.postLeaderboardAutoCourse(leaderboardName: leaderboardName, raceColumnName: raceColumnName, fleetName: fleetName, success: {
success()
}) { (error, message) in
failure(error)
}
// self.trainingRequestManager.postLeaderboardAutoCourse(leaderboardName: leaderboardName, raceColumnName: raceColumnName, fleetName: fleetName, success: {
// success()
// }) { (error, message) in
// failure(error)
// }
success()
}) { (error, message) in
failure(error)
}
@@ -0,0 +1,130 @@
//
// TrainingMarkViewController.swift
// SAPTracker
//
// Created by Raimund Wege on 11.09.17.
// Copyright © 2017 com.sap.sailing. All rights reserved.
//
import UIKit
class TrainingMarkViewController: SessionViewController {
weak var markCheckIn: MarkCheckIn!
weak var coreDataManager: CoreDataManager!
@IBOutlet weak var trainingNameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
delegate = self
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
refresh()
}
// MARK: - Setup
fileprivate func setup() {
setupButtons()
setupLocalization()
setupNavigationBar()
}
fileprivate func setupButtons() {
startTrackingButton.setBackgroundImage(Images.GreenHighlighted, for: .highlighted)
}
fileprivate func setupLocalization() {
startTrackingButton.setTitle(Translation.CompetitorView.StartTrackingButton.Title.String, for: .normal)
}
fileprivate func setupNavigationBar() {
navigationItem.titleView = TitleView(title: markCheckIn.event.name, subtitle: markCheckIn.leaderboard.name)
navigationController?.navigationBar.setNeedsLayout()
}
// MARK: - Update
fileprivate func update() {
markSessionController.update { [weak self] in
self?.refresh()
}
}
// MARK: - Refresh
fileprivate func refresh() {
trainingNameLabel.text = markCheckIn.event.name
}
// MARK: - Actions
@IBAction func optionButtonTapped(_ sender: AnyObject) {
let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
if let popoverController = alertController.popoverPresentationController {
popoverController.barButtonItem = sender as? UIBarButtonItem
}
let settingsAction = UIAlertAction(title: Translation.SettingsView.Title.String, style: .default) { [weak self] action in
self?.performSegue(withIdentifier: Segue.Settings, sender: self)
}
let checkOutAction = UIAlertAction(title: Translation.CompetitorView.OptionSheet.CheckOutAction.Title.String, style: .default) { [weak self] action in
self?.checkOut()
}
let updateAction = UIAlertAction(title: Translation.CompetitorView.OptionSheet.UpdateAction.Title.String, style: .default) { [weak self] action in
self?.update()
}
let aboutAction = UIAlertAction(title: Translation.Common.Info.String, style: .default) { [weak self] action in
self?.performSegue(withIdentifier: Segue.About, sender: alertController)
}
let cancelAction = UIAlertAction(title: Translation.Common.Cancel.String, style: .cancel, handler: nil)
alertController.addAction(settingsAction)
alertController.addAction(checkOutAction)
alertController.addAction(updateAction)
alertController.addAction(aboutAction)
alertController.addAction(cancelAction)
present(alertController, animated: true, completion: nil)
}
// MARK: - Segues
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == Segue.Tracking) {
let trackingNC = segue.destination as! UINavigationController
let trackingVC = trackingNC.viewControllers[0] as! TrackingViewController
trackingVC.checkIn = markCheckIn
trackingVC.sessionController = markSessionController
}
}
// MARK: - Properties
fileprivate lazy var markSessionController: MarkSessionController = {
return MarkSessionController(checkIn: self.markCheckIn, coreDataManager: self.coreDataManager)
}()
}
// MARK: - SessionViewControllerDelegate
extension TrainingMarkViewController: SessionViewControllerDelegate {
func performCheckOut() {
markSessionController.checkOut { (withSuccess) in
self.performCheckOutCompleted(withSuccess: withSuccess)
}
}
fileprivate func performCheckOutCompleted(withSuccess: Bool) {
coreDataManager.deleteObject(object: markCheckIn)
coreDataManager.saveContext()
navigationController?.popViewController(animated: true)
}
func startTracking() throws {
try markSessionController.startTracking()
}
}
@@ -118,12 +118,16 @@ extension TrainingTableViewController: CheckInTableViewControllerDelegate {
trainingTableViewCell.competitorLabel.text = checkIn.name
}
func checkInTableViewController(_ controller: CheckInTableViewController, prepareForSegue segue: UIStoryboardSegue, andCompetitorCheckIn checkIn: CompetitorCheckIn) {
func checkInTableViewController(_ controller: CheckInTableViewController, prepareForSegue segue: UIStoryboardSegue, andCompetitorCheckIn competitorCheckIn: CompetitorCheckIn) {
guard let trainingCompetitorVC = segue.destination as? TrainingCompetitorViewController else { return }
trainingCompetitorVC.competitorCheckIn = competitorCheckIn
trainingCompetitorVC.coreDataManager = trainingCoreDataManager
}
func checkInTableViewController(_ controller: CheckInTableViewController, prepareForSegue segue: UIStoryboardSegue, andMarkCheckIn checkIn: MarkCheckIn) {
func checkInTableViewController(_ controller: CheckInTableViewController, prepareForSegue segue: UIStoryboardSegue, andMarkCheckIn markCheckIn: MarkCheckIn) {
guard let trainingMarkVC = segue.destination as? TrainingMarkViewController else { return }
trainingMarkVC.markCheckIn = markCheckIn
trainingMarkVC.coreDataManager = trainingCoreDataManager
}
}
@@ -1,17 +0,0 @@
//
// TrainingViewController.swift
// SAPTracker
//
// Created by Raimund Wege on 21.08.17.
// Copyright © 2017 com.sap.sailing. All rights reserved.
//
import UIKit
class TrainingViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}