解放区在住氷翠メニュー

文字入力とコンソールに出力【swift】

2018-01-24 14:58

LINEで送る

このページの環境は
Swift4をベースにしています。
また、開発環境はXcode9
MacosはHighSierra 10.13となります。

練習のために。

今回の目的はテキストを入力して、コンソールに出力するという単純なもの。

上の大きな画像のようなフォームを作成。下の欄にテキストを入力。で、上のボタンを押すとコンソールに出力されるというものだ。

インターフェースビルダーにてこのような単純なものを作成しました。

言語はswiftで、macosを選択します。

「AppDelegate.swift」を開きます。

「import Cocoa」とかいっぱい書いてあります。
で、メインになるのは、「class AppDelegate: 〜」と書いてある部分の中です。
基本的にこの中にプログラムを記述していくことになるので。
で、クラスということで、オブジェクト指向の基本的な考え方を思い出してみると、いろんなユーザー関数の中で共通で使える変数を次の行の中、関数の前に記述しておく必要があります。
ということで、まず用意しないといけないのは、「インターフェースビルダー」で用意した「テキストを入力するオブジェクト」の定義です。

そこで、

というのを用意しておきます。
これで、変数は「tv」という変数が用意され、いつでも使うことができます。
行の最後に「!」を忘れないようにします。
一度、氷翠はこれで引っかかりました。

そのあとはすでに用意されている関数が2つあります。

「func applicationDidFinishLaunching(_ aNotification: Notification)」
「func applicationWillTerminate(_ aNotification: Notification)」

プログラムが起動する直前の処理とかそういう感じの関数です。
この関数の中にプログラムを用意して上げると、ウインドウが表示する前に事前の処理を行ってくれたりします。
しかし、今回は使用しません。

今回は新たに自前で関数を用意します。

という感じで用意しました。

関数の名前は「save」という名前。で、「b」という変数はボタンを意味しています。
なので、この関数の中ではbというボタンの情報をいくらでも取り出すことができる感じだと思います。
今回はあるだけで、特に何も使いません。

次に、その内容として、printはコンソールに出力する命令なので、その中身を自由に変更して確認してください。
次は変数「a」に入力されたテキストの内容を代入しています。
最後に変数「a」をコンソールに出力しています。

プログラムだけ見てみるとそれほど難しいわけではなかったのですが、氷翠はこの言語に慣れていないせいもあってか、かなりの時間を費やしてしまいましたw

では、ここで「Main.storyboard」を開きます。
現時点では、このフォームとプログラムはなんのつながりも持っていません。
なので、つながりを持たせてあげます。
「デリゲート」というのはその、「つながり」の意味を持っているそうです。

まず、右下にあるオブジェクトの一覧があるので、見てください。上のものがあるはず。

これをこの上にある3つのマークのところにドラッグします。上の画像でいうと、右のマークがこれにあたります。
このマークを選択して、右側にあるプロパティを設定していきます。
「Custom Class」のところで「class」を「AppDelegate」を選択します。
とりあえあず、それさえしておけば、プログラムとフォームにつながりが持てますので。

で、更にいろいろとつながりを持たせてあげます。

○に右矢印のマークがあるかと思いますが、ここでさらなるつながりをもたせることができます。

この中に、「Outlets」とか「Referencing Outlets」「Received Actions」とか出てくるので、まずは「Outlet」のところです。その左側に「tv」という文字があることを確認してください。
なければ「AppDelegate.swift」のプログラムに問題があるはずです。
問題がなければ、その右の方に○がついているので、ここからドラッグしていきます。

こんな感じで引っ張っていきます。

次に「Received Actions」の部分には、「save」という文字が出ているのを確認します。
もうおわかりかと思いますが、ボタンをおした時のプログラムのことです。

ということで、上と同じようにボタンのところまで引っ張っていき、つながりを持たせてあげます。

これで一通りの作業ができたので、コマンド+Rで実行してみます。

こんな感じでエディタの下の方に出ている「All Output」の部分に入力した文字が表示されていれば完成です。