storyboardを使わずにiOSでおみくじを作る
ドットインストールの以下のレッスン
を、storyboardを使わずにswiftのみで作ってみる。
storyboardを使わないプロジェクト作成
を参考にして作成。ありがとうございます。
Single View Application
を選択してプロジェクト作成- プロジェクトの設定ファイルの変更
Deployment Info
->Main Interface
の中のMain
削除
Main.storyboard
とLaunchScreen.xib
を削除AppDelegate.swift
のapplication
メソッドにコードを追加
- プロジェクトの設定ファイルの変更
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // ====↓追加===== self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window?.backgroundColor = UIColor.whiteColor() // 背景白 self.window?.rootViewController = ViewController() // ViewControllerを指定 self.window?.makeKeyAndVisible() // ====↑追加==== return true }
画面に必要な部品
- ラベル1(あなたの運勢は・・・)
- ラベル2(フォント大きめ。おみくじの結果を表示)
- ボタン1(クリックすると占いを実行し、占い結果をラベルに表示)
ラベルとボタンを配置してみる
参考
001 UILabelで文字を表示 - Swift Docs
002 UIButtonでボタンを表示 - Swift Docs
感謝。
ボタンをクリックした時の処理を追加
ボタンをクリックした時にコンソールに出力するようにしてみる
// イベントを追加する divineButton.addTarget(self, action: "onClickDivineButton", forControlEvents: .TouchUpInside) /* 占うイベント */ func onClickDivineButton(sender: UIButton) { println("onClickDivineButton: ") println("sender.currentTitle: \(sender.currentTitle)") }
ボタンをクリックしてみるとエラーが(ヽ'ω`)・・・??
MyOmikujiSwiftOnly[12918:4911213] -[MyOmikujiSwiftOnly.ViewController onClickDivineButton]: unrecognized selector sent to instance 0x7fdba25bdeb0 2015-03-27 11:24:26.043 MyOmikujiSwiftOnly[12918:4911213] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyOmikujiSwiftOnly.ViewController onClickDivineButton]: unrecognized selector sent to instance 0x7fdba25bdeb0'
メソッド指定時にコロン:
が付いていなかった!!
// メソッド指定にコロンを追加 // イベントを追加する divineButton.addTarget(self, action: "onClickDivineButton:", forControlEvents: .TouchUpInside)
onClickDivineButton: sender.currentTitle: Optional("占った!")
成功!!
適当に装飾
- Labelの背景色
- 枠線、角丸、フォントサイズ
- ボタンの背景色、角丸
完成
ソースコード
はまったところ
- storyboardを使わずにプロジェクを作る方法がわからなかったので検索していくつか試した。時間かかった
- 乱数を取得し、その数でenumから値を引っ張ろうとしたがやり方がわからずなかなかうまくいかなかった
storyboard使わないと位置の調整とか大変そう。
使ったら使ったで、複雑になってくると大変なのかな。。。
enumとか上手く使えるようになりたいです。
少しずつ作っていってコツを掴んでいきたい所存です。