[iPhone] Swift ボタンとラベルを Xcode6 で設定する

せっかく癖のある Objective-C に慣れてきたのに Swift ですか!
Xcode5が出てまだ1年も経って無いのにXcode6となりました
Swift(迅速)ですね
 
難しい事は偉い先生方に任せておいて
簡単なボタンだのラベだのいじってみましょう
 
Xcode 6.0 Beta
 
Xcode 6.1GM seed2 (2014/10/28 現在)
追記:後半に修正について追加しました
 
iOS Simulator Screen Shot 2014.10.28 16.04.06
 

Storyboard

 
気軽に UILabel を View Controller に置こうと思ったら
View Controller がでかすぎる!
適当にラベルを置いてシュミレータを走らせたら
ラベルが無い!(見えない)
 

スクリーン画面サイズの変更

 
View Controller の下にある「w」「h」をマウスで触ると
サイズを変更するダイアログが出てきます。
iPhone5s あたりで実行する時は小さめにしないとラベルが収まりません
 

constrains をしっかり入れる

 
よく見ると、 Constraints が無いとインスペクターに表示されていました
View Controller の下の、「h」の右側にこれを設定するアイコンがあり
これにより、左右、上下の constraints を設定します
(このアイコンが時々消えてしまいますが、Xcodeを再起動で現れます)
 

コードの記述

 
最初にプロジェクトを作成する時に、swift か Objective-C の選択ができる
Swift で出来た ViewController.swft となっていて、いわゆる.hのヘッダーファイルが無い

ボタンを押すとラベルに tapped ! が表示される簡単なコードです
 

 
ラベルとボタンを
@IBOutlet にそれぞれ紐付け
これは今まで通り、ヘッダーファイルがないので気抜けしますが

思わず int count … てしましたが
var で済んでしまう訳ですね
文字の@がいらないのは助かる
 
コードは短くなったようですが
ストーリーボードは大変になりそうだな
横幅が異なる色々な端末が出てくるようですから

 

追記:optional value

 
Xcode 6.1GM seed2 (2014/10/28 現在)
 
Xcode6.1GM になったので
昔のコードでBuildしてみたら
エラーになってしまいました
 
class ViewController has no initializers
 
ViewController を initialize するのかと思い
init() やら入れてみると、ますますはまり込んでしまいましたが
 
X @IBOutlet var labeltest :UILabel
O @IBOutlet var labeltest :UILabel?
 
ということでした
 
Swift では意味のある値が得られない場合は「nil」を返してきます
「何も無い」場合や「想定外」の時も含まれるようです
 
変数の定義の時に、 nil かもしれない という情報
?」optional value を付ける事になっています

また「!」は、必ず値が入る場合はこれを付ける
変数の中身が nil だと実行時にエラーとなります