swiftの復習と覚書

 何年かぶりにiOSアプリ開発のお手伝いをすることになった…しかしswiftはおろかXcodeの、いや最早macの触り方すら覚束ない…。そんな事態になった私から、そんな事態になるかもしれない未来の私への復習と覚書です。

 

swiftの復習と覚書

 

やること

Xcodeを開いてラジオボタンを用いたiOSのSingle View Appを作ってみる

 

環境(ちょっと古め)

macOS High Sierra 10.13.2

Xcode 9.3.1

swift4

 

使わせてもらった外部ライブラリ

github.com

 

1:新規プロジェクトを作る

f:id:gwn001:20181008115551p:plain

まずランチャーを開く。私よ、ランチャーはこいつです。

f:id:gwn001:20181008115622p:plain

それからXcodeを起こします。こんなアイコン。

f:id:gwn001:20181008121205p:plain

起きたら新しいプロジェクトを作ります。

f:id:gwn001:20181008121625p:plain

iOSのSingle View Appを選んで、

f:id:gwn001:20181008121918p:plain

Product Nameを付けます。今回はSelectStarという名前でLanguageのSwiftを選択、Nextで次の画面へ行くと保存場所を聞かれるので任意の場所へ保存して下さい。

 

 

2:ストーリーボードにUIパーツを配置する

f:id:gwn001:20181010162644p:plain

f:id:gwn001:20181010162703p:plain

今回使うパーツはこの2つ。ラベルとビューです。

f:id:gwn001:20181010162743p:plain

iOS標準としてXcodeに用意されているラジオボタン的な動きをするのは、このセグメントコントロールという子なのですが…ここはラジオボタンに慣らされた社会ですので求められるのもラジオボタンなのです。(iOSAndroid共通のデザインとかだと特に)

よって、この子に罪はないが今回は使いません。

f:id:gwn001:20181010165214p:plain

左端のツリーからMain.storyboradを開いて右下から必要なパーツを選択し配置します。

f:id:gwn001:20181010165802p:plain

ラベルは右上のプロパティから文言を入力します。必要があれば色やフォントも調整します。

f:id:gwn001:20181010170117p:plain

設問と選択肢を配置します。空白の正方形部分に配置しているのがビューで、この部分をこれからラジオボタンにします。

 

 

3:外部ライブラリを使ってカスタムUIクラスを適用する

f:id:gwn001:20181010173807p:plain

まずカスタムUIクラス用のswiftファイルを用意しましょう。左端ツリーのSelectStarフォルダをcontrol+クリックでメニューを開いてNew Fileです。そう、macで右クリック的な事をしたい時はcontrol+クリックです。思い出しましたか、私よ。

f:id:gwn001:20181010174234p:plain

iOSのSwift Fileを選び、次の画面でファイル名を付けます。捻りなくライブラリ名のLTHRadioButtonとしました。

ファイルができたら開いてコチラをコピペします。

f:id:gwn001:20181010174935p:plain

Main.storyboradへ戻り3つのビューのCustom ClassでLTHRadioButtonを選び適用させます。

 

4:アシスタントエディタで接続線を伸ばす

f:id:gwn001:20181013145600p:plain

右上の○が2つ重なったアイコンをつついてアシスタントエディタを開きます。

f:id:gwn001:20181013144650p:plain

アシスタントエディタでViewController.swiftが開かれているのを確認し、controlを押しながらラジオボタンをドラッグしてViewControllerクラス内へ接続線を伸ばします。

f:id:gwn001:20181013150738p:plain

Outlet接続でプロパティ名をradioButton1〜3としました。

接続線がつながらない場合は、先にViewControllerクラスへプロパティ宣言を書きストーリーボードのアシスタントエディタでプロパティから接続線を伸ばすとつながるときもあります。(たぶんXcodeのバグ)

 

5:コードを書く

左のツリーからViewController.swiftを開いてviewDidLoadにラジオボタンの選択・非選択に関するコードを書きます。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var radioButton1: LTHRadioButton!
    @IBOutlet weak var radioButton2: LTHRadioButton!
    @IBOutlet weak var radioButton3: LTHRadioButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
radioButton1.selectedColor = UIColor.red radioButton2.selectedColor = UIColor.red radioButton3.selectedColor = UIColor.red radioButton1.onSelect { self.radioButton2.deselect() self.radioButton3.deselect() } radioButton1.onDeselect { } radioButton2.onSelect { self.radioButton1.deselect() self.radioButton3.deselect() } radioButton2.onDeselect { } radioButton3.onSelect { self.radioButton1.deselect() self.radioButton2.deselect() } radioButton3.onDeselect { } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

LTHRadioButtonはこのonSelect{}とonDeselect{}がないと動かない仕様になっているので忘れず書きましょう。

 

6:ビルド

f:id:gwn001:20181013153811p:plain

左上の実行ボタンを押してビルドします。ビルド先が決まっている場合は右側のプロジェクト名が表示されているボタンから選択してから実行します。

f:id:gwn001:20181013155158p:plain

終わり。

ついでに言うと設問の正解はEärendilです。

 

 あいや えあれんでぃる えれにおん あんかりま

 

おまけ:SSの撮り方

・SSを撮る command+shift+3

・選択範囲のSSを撮る command+shift+4

・エミュでSSを撮る command+S

 

そのうちエルフ語学習アプリとか作れると良いなって妄想はあります。(開発者登録費用はありません)