Objective-C

Segueで画面遷移するときの値の渡し方

prepareForSegue内で遷移先ViewControllerのpublic propertyに値をセットするやり方です。SegueのIdentifierを判別するやり方だと今後数が増えてきた時に大変そうですが基本ぽいので覚えます。スマートにやる方法は追々調べていきたいですが、今のところこれ…

StoryBoardでSegueを使った簡単な画面遷移

UITableViewを使いを表示してセルがタップされたら詳細画面に遷移。詳細画面からは一覧画面に戻れるナビゲーションができるような遷移です。 Master-Detail Applicationのテンプレート使うと一瞬で作ってくれるのですけども何が起きてるかよくわからないので…

NavigationControllerを追加する時の動作の違い

NavigationControllerをStoryboardに追加する際はObjectLibraryから追加するかメニューのEditor>Embed In>NavigationControllerから追加することができる。 ObjectLibrary(↑)から追加するともれなくTableViewが付属してくる。RootViewとしてTableViewを引っ…

UICollectionView indexPathForItemAtPointとは

CGPoint型の座標を引数に座標に該当するindexをNSIndexPath形式で返す。 存在しない場合はnilを返す。CollectionViewの場合NSIndexPathはCollectionViewCellの数が振られる物だと思うので予めCollectionViewCellを該当座標に準備しておかないといけない(よく…

respondsToSelectorでインスタンスがメソッドを実装しているか調べる

文法 [class respondsToSelector@selector(methodName:arg:)] メソッドが実装されてない場合はnil。実装している場合は'¥x01'が帰ってきてた。(lldbコンソール)if文で実装されてる場合…実装されてない場合みたいな処理を書くときが多いみたい。(そりゃそうか)

How to drag and drop UITableViewCell from UITableView to UITableView

UITableView同士でセルをドラッグアンドドロップで行き来させたりしたかった。 UITableViewCellをドラッグしてTable外のViewにドロップする - 日々精進 処理の流れは以下。・長押しジェスチャーを登録・長押し時にCellをImageに変換してCellと同じ見た目のUI…

UICollectionViewやUITableViewはUIScrollViewのSubclassである

スクロールが必要になりそうなUICollectionView,UITableView,UITextViewはUIScrollViewがSuperClass。 UICollectionViewとか配置しただけでスクロール出来るしプロパティいじれば横スクロールにもできたりする。スクロールするためにはUIScrollViewを配置し…

UICollectionViewCellに画像を表示させたい時

UITableViewCellみたいにcell.imageView.imageみたいな物が無いからむずい。 見つけた方法1 StoryBoardでUIImageViewをUICollectionViewCellのSubviewとして追加する。UIImageViewにはTagを設定しておく。 viewWithTagでsubView取得してUIImageViewにキャス…

UICollectionViewCellをdequeueReusableCellWithReuseIdentifierで生成/取得する時はStoryboard上に該当するIdentifierのUICollectionViewCellがないと落ちる

'NSInternalInconsistencyException', reason: 'could not dequeue a view of kind: UICollectionElementKindCell with identifier Hoge - must register a nib or a class for the identifier or connect a prototype cell in a storyboard' こんな感じで落…

UICollectionViewについて

Apple Developer Documentation iOS6から追加されたClassでUITableViewと同じような要領で複数のコンテンツを管理できるViewを作成できます。 UITableViewではセルはRow単位で管理されていましたがUICollectionViewではItem単位で管理されます。UITableView…

UITableViewCellで画像を表示する時

UITableViewCellにはラベルや画像を表示するプロパティが用意されているのでわざわざ自分でSubviewを追加するような記述をする必要はない。画像を表示するときはimageView.imageにUIImageのインスタンスを渡せば良い。 cell = [[UITableViewCell alloc] init…

ARC(Automatic Reference Counting)について得た知識

ARCはiOS5から導入されたメモリ管理方式でMRC(Manual Reference Counting)で管理していた部分を自動化してくれる MRCで使用していたretain、release、autoreleaseを明示的に指定するとコンパイルエラーになる 書いてあるとXcodeにこんなこと言われる ARC for…

UITableViewDataSourceで実装必須なデリゲートメソッド

UITableDataSourceプロトコルで実装必須なメソッドが2種類ある。 numberOfRowsInSection セクションに対してセルがいくつあるか。 cellForRowAtIndexPath IndexPathのセルの中身はこのメソッド内で設定するみたい。 セルはUITableViewCellのオブジェクトであ…

Objective-Cのプロトコル

UITableViewでUITableViewDataSourceとUITableViewDelegateが出てきてよくわからんかった。プロトコルは抽象メソッドが定義された塊でプロトコルを採用したクラス内でメソッドをオーバーライドしなければならない。(optionalはその限りではない)プロトコルを…

iOS8ではUIAlertViewはdeprecatedになるからUIAlertControllerを使う

参考 iOS8でのダイアログ表示:廃止になるUIAlertViewと推奨されているUIAlertControllerのメリット - Qiita UIAlertControllerについても調べてみようと思います。

UIAlertViewStyleで指定できる値とその見た目

(自分は試していないのですが)iOS7以前はUIAlertViewにSubviewを追加してテキストフィールドを置いたり画像を置いたりできたそうなんですがiOS7以降はできなくなったとのことでした。 アラート画面にテキストフィールドがあるのよく見かけますよね?それはUI…

NSArray,NSDictionaryに格納する値はオブジェクトでなければならない

今回はCGPointをNSMutableDictionaryに格納しようとして悩んでおりました。 NSArray,NSDictionaryに格納できる値はNSObjectのサブクラスである必要があるそうなのです。 CGPointやCGRect等の構造体はNSObjectのサブクラスではない為そのまま格納はできないよ…

NSArray,NSDictionaryは値が固定

RubyでいうところのArrayとHashはObjective-CだとNSArrayとNSDictionaryになるのかなと思っていたんだけどこの2つって生成時指定した値から変化がないときに使う物なんだな。 値の追加とか削除とかしたい場合にはそれぞれNSMutableArray,NSMutableDictionary…

Objective-Cで使える汎用的な型 id型

error: property 'xxx' not found on object of type 'id' 上記のようなエラーをたくさん味わってid型というものがあるんだと知りました。 id型は対象オブジェクトへのポインタを持ったオブジェクトらしいのでそりゃ何もメソッド叩けるわけないですな。id型…

UIGestureRecognizerのstateプロパティで状態がわかる

ドラッグ&ドロップを感知したくなりました。ドラッグはUIPanGestureRecognizerで拾えるんですがドロップはどうすればいいんでしょうか? ドロップはドラッグが終了した時点と等しいのでUIPanGestureRecognizerのstateプロパティを見てEndedになった時がドロ…

LabelやUIImageViewはデフォルトだとタッチイベントを認識できない

アトリビュートインスペクタのInteractionの項目がデフォルトでチェックされていないので使う時はチェックする。 ピンチイン、ピンチアウトとか2本指の奴も使う時はMultiple Touchをチェックするとできるみたい。

UIGestureRecognizer Class

OverviewUIGestureRecognizer is an abstract base class for concrete gesture-recognizer classes. A gesture-recognizer object—or, simply, a gesture recognizer—decouples the logic for recognizing a gesture and acting on that recognition. When …

Storyboardでタップされたらアラートを出す処理

Tap Gesture Recognizerをビューにドロップしてアクション接続したメソッド内でUIAlertViewを使う。 Tap Gesture Recognizerはこんなの。 ドロップするとDockエリアに表示されるのでここからCtrl+ドラッグで引っ張る。 UIAlertView *alert = [[UIAlertView a…

Push Notificationのプロバイダ側のプラグインを変更した

Apns4rを使っていたけどフィードバックサービスのところの実装がまだ完成してなくて、自分でやろうとしたんだけどOpenSSL周りの仕組みよくわからなかったので実装されているプラグインを使うことにした。 jpoz/APNS · GitHub Githubのソースが最新。Gemでイ…

iPhoneでのPush Notification(プッシュ通知)の実装方法メモ

公式ドキュメント(日本語) https://developer.apple.com/jp/devcenter/ios/library/documentation/RemoteNotificationsPG.pdf ※PDFファイル 参考リンク 実装/準備 http://iphone.longearth.net/2009/09/01/%E3%80%90iphone%E3%80%91push-notification%E3%81%…