Rewrite for cleaner
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// AppDelegate.swift
|
||||
// Logger4
|
||||
//
|
||||
// Created by Kilian Hofmann on 15.06.17.
|
||||
// Copyright © 2017 Kilian Hofmann. All rights reserved.
|
||||
//
|
||||
|
||||
import Cocoa
|
||||
|
||||
@NSApplicationMain
|
||||
class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
|
||||
|
||||
|
||||
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
||||
// Insert code here to initialize your application
|
||||
}
|
||||
|
||||
func applicationWillTerminate(_ aNotification: Notification) {
|
||||
// Insert code here to tear down your application
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Bump build number in Info.plist files if a source file have changed.
|
||||
#
|
||||
# usage: bump_buildnum.py buildnum.ver Info.plist [ ... Info.plist ]
|
||||
#
|
||||
# andy@trojanfoe.com, 2014.
|
||||
#
|
||||
|
||||
import sys, os, subprocess, re
|
||||
|
||||
def read_verfile(name):
|
||||
version = None
|
||||
build = None
|
||||
verfile = open(name, "r")
|
||||
for line in verfile:
|
||||
match = re.match(r"^version\s+(\S+)", line)
|
||||
if match:
|
||||
version = match.group(1).rstrip()
|
||||
match = re.match(r"^build\s+(\S+)", line)
|
||||
if match:
|
||||
build = int(match.group(1).rstrip())
|
||||
verfile.close()
|
||||
return (version, build)
|
||||
|
||||
def write_verfile(name, version, build):
|
||||
verfile = open(name, "w")
|
||||
verfile.write("version {0}\n".format(version))
|
||||
verfile.write("build {0}\n".format(build))
|
||||
verfile.close()
|
||||
return True
|
||||
|
||||
def set_plist_version(plistname, version, build):
|
||||
if not os.path.exists(plistname):
|
||||
print("{0} does not exist".format(plistname))
|
||||
return False
|
||||
|
||||
plistbuddy = '/usr/libexec/Plistbuddy'
|
||||
if not os.path.exists(plistbuddy):
|
||||
print("{0} does not exist".format(plistbuddy))
|
||||
return False
|
||||
|
||||
cmdline = [plistbuddy,
|
||||
"-c", "Set CFBundleShortVersionString {0}".format(version),
|
||||
"-c", "Set CFBundleVersion {0}".format(build),
|
||||
plistname]
|
||||
if subprocess.call(cmdline) != 0:
|
||||
print("Failed to update {0}".format(plistname))
|
||||
return False
|
||||
|
||||
print("Updated {0} with v{1} ({2})".format(plistname, version, build))
|
||||
return True
|
||||
|
||||
def should_bump(vername, dirname):
|
||||
verstat = os.stat(vername)
|
||||
allnames = []
|
||||
for dirname, dirnames, filenames in os.walk(dirname):
|
||||
for filename in filenames:
|
||||
allnames.append(os.path.join(dirname, filename))
|
||||
|
||||
for filename in allnames:
|
||||
filestat = os.stat(filename)
|
||||
if filestat.st_mtime > verstat.st_mtime:
|
||||
print("{0} is newer than {1}".format(filename, vername))
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def upver(vername):
|
||||
(version, build) = read_verfile(vername)
|
||||
if version == None or build == None:
|
||||
print("Failed to read version/build from {0}".format(vername))
|
||||
return False
|
||||
|
||||
# Bump the version number if any files in the same directory as the version file
|
||||
# have changed, including sub-directories.
|
||||
srcdir = os.path.dirname(vername)
|
||||
bump = should_bump(vername, srcdir)
|
||||
|
||||
if bump:
|
||||
build += 1
|
||||
print("Incremented to build {0}".format(build))
|
||||
write_verfile(vername, version, build)
|
||||
print("Written {0}".format(vername))
|
||||
else:
|
||||
print("Staying at build {0}".format(build))
|
||||
|
||||
return (version, build)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if os.environ.has_key('ACTION') and os.environ['ACTION'] == 'clean':
|
||||
print("{0}: Not running while cleaning".format(sys.argv[0]))
|
||||
sys.exit(0)
|
||||
|
||||
if len(sys.argv) < 3:
|
||||
print("Usage: {0} buildnum.ver Info.plist [... Info.plist]".format(sys.argv[0]))
|
||||
sys.exit(1)
|
||||
vername = sys.argv[1]
|
||||
|
||||
(version_orig, build_orig) = read_verfile(vername)
|
||||
|
||||
(version, build) = upver(vername)
|
||||
if version == None or build == None:
|
||||
sys.exit(2)
|
||||
|
||||
if (version_orig, build_orig) < (version, build):
|
||||
for i in range(2, len(sys.argv)):
|
||||
plistname = sys.argv[i]
|
||||
set_plist_version(plistname, version, build)
|
||||
|
||||
sys.exit(0)
|
||||
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||
<key>LSUIElement</key>
|
||||
<true/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2016 Kilian Hofmann. All rights reserved. Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11185.3" systemVersion="16A286a" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11185.3"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
<connections>
|
||||
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Logger3" customModuleProvider="target"/>
|
||||
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
|
||||
<menu title="Main Menu" systemMenu="main" autoenablesItems="NO" id="32o-fD-Eb8">
|
||||
<items>
|
||||
<menuItem title="Logger 3" id="eya-ZA-jVJ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Logger 3" systemMenu="apple" autoenablesItems="NO" id="iOo-hL-rQD">
|
||||
<items>
|
||||
<menuItem title="About Logger 3" id="hsq-ac-mTY">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-1" id="bc0-1R-Igt"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="70D-DC-4E8"/>
|
||||
<menuItem title="Hide Logger 3" keyEquivalent="h" id="bX4-vO-bY0">
|
||||
<connections>
|
||||
<action selector="hide:" target="-1" id="MsE-8T-Jpb"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Others" keyEquivalent="h" id="aph-dg-qpb">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="hideOtherApplications:" target="-1" id="u0j-dO-bnB"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show All" id="jGO-0y-uKn">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="unhideAllApplications:" target="-1" id="nGM-3Z-seW"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="Ye0-wn-VSZ"/>
|
||||
<menuItem title="Quit Logger 3" keyEquivalent="q" id="efO-ej-3e3">
|
||||
<connections>
|
||||
<action selector="terminate:" target="-1" id="Ie8-dZ-qi6"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Edit" id="qBV-1P-Ubn">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Edit" id="PNk-9a-71I">
|
||||
<items>
|
||||
<menuItem title="Undo" keyEquivalent="z" id="wek-H9-SLO">
|
||||
<connections>
|
||||
<action selector="undo:" target="-1" id="Wfx-Kw-cau"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Redo" keyEquivalent="Z" id="hjz-ia-EJA">
|
||||
<connections>
|
||||
<action selector="redo:" target="-1" id="1lk-kc-0YX"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="7gg-AT-e2y"/>
|
||||
<menuItem title="Cut" keyEquivalent="x" id="czs-Jo-gEK">
|
||||
<connections>
|
||||
<action selector="cut:" target="-1" id="2bs-a6-VgO"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy" keyEquivalent="c" id="dWT-7N-12d">
|
||||
<connections>
|
||||
<action selector="copy:" target="-1" id="SMO-ul-cm8"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste" keyEquivalent="v" id="P94-fg-iv0">
|
||||
<connections>
|
||||
<action selector="paste:" target="-1" id="Daq-Cv-zxz"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Select All" keyEquivalent="a" id="Cdy-vz-Ss9">
|
||||
<connections>
|
||||
<action selector="selectAll:" target="-1" id="0DP-I0-AZk"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
<point key="canvasLocation" x="-67" y="-749"/>
|
||||
</menu>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,128 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11185.3" systemVersion="16A286a" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11185.3"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="SettingsWindowController" customModule="Logger3" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="480" height="148"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
|
||||
<view key="contentView" wantsLayer="YES" id="se5-gp-TjO">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="148"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ANt-3h-Oyk">
|
||||
<rect key="frame" x="157" y="106" width="303" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="ZEi-Jt-cuo">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="aHP-ZZ-xCK" name="value" keyPath="values.upstream" id="fxN-Gy-Szs"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Ycn-ts-JLP">
|
||||
<rect key="frame" x="18" y="106" width="116" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Modem Upstream:" id="lAx-c4-sWO">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="d4L-qo-4wS">
|
||||
<rect key="frame" x="18" y="74" width="133" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Modem Downstream:" id="oeh-xU-Gg6">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9gP-wv-Svk">
|
||||
<rect key="frame" x="157" y="74" width="303" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="rGM-TE-sjl">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="aHP-ZZ-xCK" name="value" keyPath="values.downstream" id="9uX-kn-Xc2"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QL3-SH-xov">
|
||||
<rect key="frame" x="18" y="42" width="34" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Port:" id="olU-sy-AtO">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="x6I-cX-Bo8">
|
||||
<rect key="frame" x="157" y="42" width="49" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="crU-qU-FJL">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="aHP-ZZ-xCK" name="value" keyPath="values.port" id="RKt-4G-WHW"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9I9-2a-L2r">
|
||||
<rect key="frame" x="18" y="18" width="122" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Autostart Server" bezelStyle="regularSquare" imagePosition="left" inset="2" id="r84-bO-IHn">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="aHP-ZZ-xCK" name="value" keyPath="values.autostart" id="bbv-6s-vsL"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vGB-sa-cDA">
|
||||
<rect key="frame" x="397" y="13" width="57" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Ok" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="cDR-9m-MtM">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="close:" target="Lb6-Mc-rfv" id="Asm-ec-kwu"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YLU-XV-sDy">
|
||||
<rect key="frame" x="214" y="42" width="144" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Requires Server restart" id="EYY-im-3b0">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="139" y="100"/>
|
||||
</window>
|
||||
<customObject id="Lb6-Mc-rfv" customClass="AppDelegate" customModule="Logger3" customModuleProvider="target"/>
|
||||
<userDefaultsController representsSharedInstance="YES" id="aHP-ZZ-xCK"/>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,27 @@
|
||||
//
|
||||
// ViewController.swift
|
||||
// Logger4
|
||||
//
|
||||
// Created by Kilian Hofmann on 15.06.17.
|
||||
// Copyright © 2017 Kilian Hofmann. All rights reserved.
|
||||
//
|
||||
|
||||
import Cocoa
|
||||
|
||||
class ViewController: NSViewController {
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
// Do any additional setup after loading the view.
|
||||
}
|
||||
|
||||
override var representedObject: Any? {
|
||||
didSet {
|
||||
// Update the view, if already loaded.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
version 4.0
|
||||
build 1
|
||||
Reference in New Issue
Block a user