Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

Swift

Segueが2回呼ばれてしまったらSegueをVCから貼り直す

StoryboardでUITableViewからSegueを伸ばしていると、VCのライフサイクルとdidSelectAtRowのタイミングで2回呼ばれてしまうようです。こいつを治すには、Segueの貼り方を変えるだけ。VCから対象のViewControllerに向かってSegueを貼ります。あとはdidSelectA…

ContainerViewでのViewController切り替え

よくありますよね。SegmentedControlでスイッチを切り替えるタイミングで、ContainerViewのViewControllerを切り替えたいみたいな。あるある。先駆者の方々を探してみた所、下記のエントリが最も簡単に実行できた。ソースコピペして動きます。spin.atomicobj…

UICollectionViewの背景が真っ黒になる

デフォルトの背景色が真っ黒らしい... UIColor.clearColor()を呼べば解決です。なんなのほんとw

EurekaでカスタムのViewControllerをPUSHしたい

Eurekaには「presentationMode」というプロパティがあって、これを実装しているRowに限りPushしたい対象のVCをカスタマイズできる。論よりコード。 Push CustomViewControler on Eureka Rowこれが一番簡単。

UITextFieldでキーボードの自動スクロールをするまでの流れ

結構手順がややこしい。2時間ぐらいかかってしまった。 自分の作ってるViewをUIScrollViewの配下に置く まずはこれ。AutoLayoutを使っている場合は、こちらを参照下さい。この通りやったら出来ました。easyramble.com入れ込んだはいいけど、画面トップにIB…

UIButton.titleLabel?.text ではラベルの名称は変更できません

簡単なことで、UIButtonのtitleLabelプロパティにはセッターが無いからです。getのみ。つまり、readonly.UIButton Class Referenceを参照下さい。↓のように、getしか無いです。gyazo.comボタンのタイトルラベルを変更するには、setTitleメソッドを使いましょ…

JSON⇔オブジェクトの変換はObjectMapperが簡単で好き

3日ぐらい前にSwift2.0対応をしてくれました。ありがてぇありがてぇ。github.comMappableというプロトコルを実装するだけで使えるようになりますし、Realmのオブジェクトもシリアライズすることが出来ます。 //User.swift import ObjectMapper class User : …

Swift2.0でファイルの読み込み

Swift2.0で構文が変わっている。昔はこんなシグネチャだった。 //1.2 NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil) //2.0 NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) throws try〜catch構文が入った…

Swiftで書いたiOSアプリの再設計方針を考える

iOS8.0以上をサポートするSwiftアプリを作っております。ちゃんと動くけど汚い。色々辛みがある。というわけで、ノーガードでその辛みを書いていこうと思います。 StoryBoardの辛み 僕の作ったアプリのStoryBoardはこんな状態になっている。Main.storyboard…

CoreDataで消したはずのデータがアプリ再起動で復活する

という症状に遭遇してしまいました。CoreDataで管理していたお買い物かごのオブジェクトを全消し。その後、ホームボタンをダブルクリックで実行中アプリの一覧からアプリを上にスワイプして削除。で、もう1度アプリを立ち上げると消したはずのデータが復帰…

UIAlertViewとUIAlertControllerの判別方法を誤るとクラッシュします

iOS7対応のアプリをSwiftで開発する時の話です。 元ネタはこちら。UIAlertView is crashing app on iOS 7 swift - UIAlertView is crashing app on iOS 7 - Stack Overflow上記記事にあるように、下記のソースコードでiOS7,8の判定をしてはいけません。 if l…

UIScrollView + AutoLayoutの実装方法の考え方

Using UIScrollView with Auto Layout in iOSここに書いてある内容を読んだ。やっと言っている意味がわかってきたので、まとめておく。 UIScrollView→UIView(以後ContentViewとする)という配置方法を取る。 UIScrollVIewはViewControllerのViewにぴったり合…

SwiftアプリでiOS7.xをサポートする時に気をつけること

Swiftアプリを作って、その中でSwiftのライブラリを参照している形をとっている時に注意が必要。ArchiveしてApp Storeに配信する時に以下のようなエラーが出て審査が通らない可能性があるためです。これが曲者なのが、AdHocで実機に入れる時は何の問題もない…

presentViewControllerでのCallbackの実装

これが一番柔軟でええわ。Delegateを経由して子供からコールバック用の処理を叩くSwift で delegate (デリゲート)を使って View を閉じた時にイベントを発火させる方法 var delegate: ParentViewControllerDelegate! func closeModalView() { self.dismiss…

UITextFieldの外をタップするとキーボードを消す方法

鉄板の小ネタですかね。 override func viewDidload() { let myTap = UITapGestureRecognizer( target: self, action: "tapGesture:") self.view.addGestureRecognizer(myTap) } func tapGesture(sender: UITapGestureRecognizer){ for v in self.view.subvi…

iOSのAutoLayoutのON/OFFを使い分けたい件

iOS6から導入されたというこのAuto Layout. ユニバーサルアプリを作る場合にframeをチマチマいじって(別にそんなに大変でもないと思うけど) 調整しなくても良いというメリットがあるようだ。具体的には親のViewからどれだけのマージンを取るかを上下左右(左…

PlaygroundではARCのテストコードを書いても動きませんよ

Swiftのドキュメントに書いているARCのデイニシャライザ (deinit)を呼ぼうとしたら動かなかった。Deinit method is never called - Swift playground Xcode's Playgrounds for Swift don't work like regular apps; they aren't being run just once. The ob…

swiftだと簡単にプロパティの監視が出来る件

The Swift Programming Language: Propertiesよりこれは簡単でびっくりだ。C#のPropertyChangedよりもイケてる仕組みだと思う。 class StepCounter { var totalSteps: Int = 0 { willSet(newTotalSteps) { println("About to set totalSteps to \(newTotalSt…

Swiftの関数はオブジェクトとして使える

JS使いならふつーの話だけど。こういうコードを見るとObjective-Cとは全く別やなぁ・・・ //Intを引数にしてIntを返す関数を返す func makeIncremeter()->(Int->Int) { func plus(number:Int) -> Int { return number + 1 } return plus } var increment = m…

Swiftのswitch-case文が柔軟すぎて気持ち悪い

iOS4.3以来のiOS開発をすることになり、iOS7以上でいいんでSwiftで実装することに決めた。絶対、今のほうが楽だ。当時はARCがなくてシビアなコード書いたわー。すぐ落ちたりしたわー。Swift離陸ガイド作者: 高橋政明出版社/メーカー: 有限会社 快技庵発売日:…