せっかく癖のある Objective-C に慣れてきたのに Swift ですか!
Xcode5が出てまだ1年も経って無いのにXcode6となりました
Swift(迅速)ですね
難しい事は偉い先生方に任せておいて
簡単なボタンだのラベだのいじってみましょう
Xcode 6.0 Beta
Xcode 6.1GM seed2 (2014/10/28 現在)
追記:後半に修正について追加しました
気軽に 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 ! が表示される簡単なコードです
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import UIKit class ViewController: UIViewController { @IBOutlet var labeltest :UILabel? @IBOutlet var buttonTest :UIButton? var count = 0 @IBAction func buttonTapped(sender : AnyObject) { count++; if(count%2 == 0){ labeltest?.text = "" } else{ labeltest?.text = "tapped !" } } override func viewDidLoad() { super.viewDidLoad() labeltest?.text = "label" buttonTest?.setTitle("Tap me !", forState:UIControlState.Normal) // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } |
ラベルとボタンを
@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 だと実行時にエラーとなります