Skip to content

Commit ed98b0a

Browse files
committed
Add a button to feature cell to allow details to be viewed
1 parent dd3a274 commit ed98b0a

File tree

3 files changed

+40
-17
lines changed

3 files changed

+40
-17
lines changed

FeatureFlags/Classes/UI/Feature Flags/View Controller/FeatureFlagsViewController.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@
99
import Foundation
1010
import UIKit
1111

12+
extension UIControl {
13+
func addAction(for controlEvents: UIControl.Event = .touchUpInside, _ closure: @escaping()->()) {
14+
if #available(iOSApplicationExtension 14.0, *) {
15+
addAction(UIAction { (action: UIAction) in closure() }, for: controlEvents)
16+
}
17+
}
18+
}
19+
1220
class FeatureFlagsViewController: UITableViewController {
1321

1422
// MARK: Type definitions
@@ -49,6 +57,11 @@ class FeatureFlagsViewController: UITableViewController {
4957
}
5058

5159
private func bindCell(_ cell: FeatureFlagTableViewCell, feature: Feature) -> FeatureFlagTableViewCell {
60+
cell.featureDetailButton.addAction {
61+
let viewController = FeatureDetailsViewController(style: .grouped)
62+
viewController.feature = feature
63+
self.navigationController?.pushViewController(viewController, animated: true)
64+
}
5265
let testVariation = feature.testVariation()
5366
cell.featureName.text = feature.name.rawValue
5467
if let description = feature.detailText {

FeatureFlags/Classes/UI/Feature Flags/Views/FeatureFlagTableViewCell.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class FeatureFlagTableViewCell: UITableViewCell {
1313
@IBOutlet weak var featureName: UILabel!
1414
@IBOutlet weak var featureDescription: UILabel!
1515
@IBOutlet weak var featureDescriptionHeight: NSLayoutConstraint!
16+
@IBOutlet weak var featureDetailButton: UIButton!
1617
@IBOutlet weak var featureType: UILabel!
1718
@IBOutlet weak var featureEnabled: UISwitch!
1819
@IBOutlet weak var testVariation: UILabel!
Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="15505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
33
<device id="retina4_7" orientation="portrait" appearance="light"/>
44
<dependencies>
55
<deployment identifier="iOS"/>
6-
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15510"/>
6+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
77
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
88
</dependencies>
99
<objects>
@@ -17,48 +17,56 @@
1717
<autoresizingMask key="autoresizingMask"/>
1818
<subviews>
1919
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Type" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SyP-mo-Slb">
20-
<rect key="frame" x="15" y="48.5" width="33.5" height="22"/>
20+
<rect key="frame" x="15.999999999999996" y="48.333333333333336" width="33.666666666666657" height="22.000000000000007"/>
2121
<fontDescription key="fontDescription" name="Avenir-Light" family="Avenir" pointSize="16"/>
2222
<nil key="textColor"/>
2323
<nil key="highlightedColor"/>
2424
</label>
2525
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Feature name" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RIh-xK-M9f">
26-
<rect key="frame" x="15" y="11" width="125" height="27.5"/>
26+
<rect key="frame" x="16" y="10.999999999999998" width="125" height="27.333333333333329"/>
2727
<fontDescription key="fontDescription" name="Avenir-Medium" family="Avenir" pointSize="20"/>
2828
<nil key="textColor"/>
2929
<nil key="highlightedColor"/>
3030
</label>
31-
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Descriptive text" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="csL-iu-7Iq">
32-
<rect key="frame" x="15" y="112.5" width="345" height="13.5"/>
33-
<constraints>
34-
<constraint firstAttribute="height" constant="13.5" id="gud-Ux-kW8"/>
35-
</constraints>
36-
<fontDescription key="fontDescription" style="UICTFontTextStyleCaption2"/>
37-
<nil key="textColor"/>
38-
<nil key="highlightedColor"/>
39-
</label>
4031
<switch hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uEc-y8-RFI">
41-
<rect key="frame" x="301" y="87" width="51" height="31"/>
32+
<rect key="frame" x="300" y="87" width="51" height="31"/>
4233
</switch>
4334
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="cog" translatesAutoresizingMaskIntoConstraints="NO" id="mBh-zM-os8">
44-
<rect key="frame" x="328" y="11" width="32" height="32"/>
35+
<rect key="frame" x="327" y="11" width="32" height="32"/>
4536
<constraints>
4637
<constraint firstAttribute="width" constant="32" id="Smq-O6-CCW"/>
4738
<constraint firstAttribute="height" constant="32" id="yRd-4y-ssN"/>
4839
</constraints>
4940
</imageView>
5041
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Test Variation" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cbb-xH-E5a">
51-
<rect key="frame" x="15" y="80.5" width="95" height="22"/>
42+
<rect key="frame" x="16" y="80.333333333333329" width="94.666666666666671" height="22"/>
5243
<fontDescription key="fontDescription" name="Avenir-LightOblique" family="Avenir" pointSize="16"/>
5344
<nil key="textColor"/>
5445
<nil key="highlightedColor"/>
5546
</label>
47+
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UsT-Q7-u07">
48+
<rect key="frame" x="330" y="166" width="40" height="34"/>
49+
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
50+
<buttonConfiguration key="configuration" style="plain" image="chevron.right" catalog="system"/>
51+
</button>
52+
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Descriptive text" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="csL-iu-7Iq">
53+
<rect key="frame" x="16" y="112.33333333333333" width="82.666666666666671" height="13.666666666666671"/>
54+
<constraints>
55+
<constraint firstAttribute="height" constant="13.5" id="gud-Ux-kW8"/>
56+
</constraints>
57+
<fontDescription key="fontDescription" style="UICTFontTextStyleCaption2"/>
58+
<nil key="textColor"/>
59+
<nil key="highlightedColor"/>
60+
</label>
5661
</subviews>
5762
<constraints>
63+
<constraint firstAttribute="bottom" secondItem="UsT-Q7-u07" secondAttribute="bottom" constant="5" id="3hL-5y-emk"/>
5864
<constraint firstItem="csL-iu-7Iq" firstAttribute="top" secondItem="cbb-xH-E5a" secondAttribute="bottom" constant="10" id="8fZ-Xv-H7Z"/>
5965
<constraint firstItem="uEc-y8-RFI" firstAttribute="centerY" secondItem="5DE-Ua-9LB" secondAttribute="centerY" id="FUT-Iu-wCI"/>
6066
<constraint firstItem="cbb-xH-E5a" firstAttribute="leading" secondItem="SyP-mo-Slb" secondAttribute="leading" id="K5T-P3-yF8"/>
67+
<constraint firstAttribute="trailing" secondItem="UsT-Q7-u07" secondAttribute="trailing" constant="5" id="NAt-tZ-4wb"/>
6168
<constraint firstItem="SyP-mo-Slb" firstAttribute="top" secondItem="RIh-xK-M9f" secondAttribute="bottom" constant="10" id="O6p-iK-3Vv"/>
69+
<constraint firstItem="UsT-Q7-u07" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="csL-iu-7Iq" secondAttribute="trailing" id="Rjq-jZ-4fF"/>
6270
<constraint firstAttribute="trailingMargin" secondItem="uEc-y8-RFI" secondAttribute="trailing" constant="10" id="Rq2-gZ-f1H"/>
6371
<constraint firstAttribute="bottom" secondItem="csL-iu-7Iq" secondAttribute="bottom" priority="249" constant="10" id="SeQ-db-6Cb"/>
6472
<constraint firstItem="cbb-xH-E5a" firstAttribute="leading" secondItem="SyP-mo-Slb" secondAttribute="leading" id="TEi-Cy-HW6"/>
@@ -67,7 +75,6 @@
6775
<constraint firstItem="RIh-xK-M9f" firstAttribute="leading" secondItem="5DE-Ua-9LB" secondAttribute="leadingMargin" id="eMl-Pv-vue"/>
6876
<constraint firstItem="uEc-y8-RFI" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="SyP-mo-Slb" secondAttribute="trailing" constant="10" id="h9W-Ia-XiY"/>
6977
<constraint firstItem="csL-iu-7Iq" firstAttribute="leading" secondItem="cbb-xH-E5a" secondAttribute="leading" id="jEC-AH-WSH"/>
70-
<constraint firstItem="mBh-zM-os8" firstAttribute="trailing" secondItem="csL-iu-7Iq" secondAttribute="trailing" id="k1e-m4-4U9"/>
7178
<constraint firstItem="uEc-y8-RFI" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="cbb-xH-E5a" secondAttribute="trailing" constant="10" id="nQ4-bb-Tga"/>
7279
<constraint firstItem="RIh-xK-M9f" firstAttribute="top" secondItem="5DE-Ua-9LB" secondAttribute="topMargin" id="uSH-m5-djs"/>
7380
<constraint firstAttribute="trailingMargin" secondItem="mBh-zM-os8" secondAttribute="trailing" id="uzD-1M-0Z4"/>
@@ -79,6 +86,7 @@
7986
<outlet property="bottomMargin" destination="SeQ-db-6Cb" id="MIt-Cx-Tp3"/>
8087
<outlet property="featureDescription" destination="csL-iu-7Iq" id="E1A-3p-GmW"/>
8188
<outlet property="featureDescriptionHeight" destination="gud-Ux-kW8" id="di8-bY-lKX"/>
89+
<outlet property="featureDetailButton" destination="UsT-Q7-u07" id="0vI-lY-Gtq"/>
8290
<outlet property="featureEnabled" destination="uEc-y8-RFI" id="3Ed-xR-rRH"/>
8391
<outlet property="featureName" destination="RIh-xK-M9f" id="JmT-jL-SGz"/>
8492
<outlet property="featureType" destination="SyP-mo-Slb" id="8gL-0q-6il"/>
@@ -89,6 +97,7 @@
8997
</tableViewCell>
9098
</objects>
9199
<resources>
100+
<image name="chevron.right" catalog="system" width="97" height="128"/>
92101
<image name="cog" width="32" height="32"/>
93102
</resources>
94103
</document>

0 commit comments

Comments
 (0)