サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
smallmakeprgnote.wordpress.com
2.モデルの記述 person.rb accepts_nested_attributes_for を使いますね。 has_many :addresses, :dependent => :destroy accepts_nested_attributes_for :addresses address.rb belong_to :person 3.コントローラの記述 person_controller.rb # update は @person.update(person_params) だけでよい def update if !@person.update(person_params) .... something to process .... end render .... end ポイントは person_params で使う Strong Parameter の記述です。 :addr
データベースの集計を CSVファイルでダウンロードする処理が必要になった。 ファイルダウンロードには send_data を使う。 今回は、非同期処理するつもりはなかったが、集計の処理には10秒くらいかかるので、ボタンをクリックして10秒くらい待ってからダウンロードが始まるので、待ち時間に「しばらくお待ちください」を表示したい。 処理開始時にこれを表示して、ダウンロードが終わったらそれを消すという動きにしたかった。 ボタンをクリック→以下のJavaScript $("#message").html("しばらくお待ちください"); window.location.href = "<%= totaling_path %>"; //←集計してsend_dataするアクションのURL ↓ そして「集計してsend_dataするアクション」の最後にメッセージを消すためのレンダリングして完了! ところ
drawRectの中でUIImageを単純に90度回転したかったのだけれど、なんだかいろんな方法がWebには上がっていて実際試してみたりして丸一日遠回りしてしまった。 例えば、 UIImage-Extensions (これ自体はとても便利そう) How to Rotate a UIImage 90 degrees? rotate a UIImage help また、contextには他にもいろいろ描画するのでcontext全体を回転させたくはないというのもある。 それで結論的にはUIImageの90度の回転だけなので、とても簡単にできたのでメモしておく。UIimage.CGImage を使う。 ここに記事がある→Rotate a UIImage by 90 degree angles image = [UIImage imageWithCGImage:image.CGImage scale
元になるview controller のmodalPresentationStyleをUIModalPresentationCurrentContextにするとできる。 ModalViewController* viewController = [[ModalViewController alloc] init]; viewController.delegate = self; viewController.view.backgroundColor = [UIColor clearColor]; self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext; viewController.modalTransitionStyle = UIModalTransitionStyleCr
ViewDidLoadでself.view.frameを取得したら、ランドスケープの時widthとheightが逆なので、いちいち自分で入れ替えをしてステータスバー分を計算に入れ、portrateSize_ と landscapeSize_ というCGSizeを作って使い回していた。 下記サイトのによるとViewDidLoadではなくviewWillAppearで取得すべきなのだという。初歩的なことだったろうが僕は知らなかった。 uiview – “Incorrect” frame / window size after re-orientation in iPhone or iPad – Stack Overflow 以下のコードで試してみた。 – (void)viewDidLoad { NSLog(@”ViewDidLoad:width/height:%f/%f”,self.view.
UITapGestureRecognizer でタップを検知するとき、シングルタップとダブルタップの両方に対応するために2つ登録する。 UITapGestureRecognizer* g1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; g1.numberOfTapsRequired = 1; g1.numberOfTouchesRequired = 1; g1.delegate = self; [self.view addGestureRecognizer:g1]; UITapGestureRecognizer* g2 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selecto
CoreDataに連動したTableViewのアプリの場合、おなじみのfetchedResultsControllerの書いて、各レコードにはソート番号を入れるdisplayOrderというNSNumberの項目を作って表示順を管理している。 まず、第一の謎。ソート番号って必要なのか? fetchedResultsControllerを用いないのであれば、ソートのためのdisplayOrderは作らずに、物理的な行の入れ替えだけを行えばいいようなのだが、CoreDataの場合、レコード生成した順番が必ずしも物理的な順番とは限らないので、やはりソート番号による管理は必須のようだ。 第二の謎。moveRowAtIndexPathに来た時点では、indexPathの順番は既に変わっているのだろうか。それとも、まだ変わっていないのか?つまり僕は、moveRowAtIndexPathはどこからどこへ
cocoa touch – Couldn’t UIToolBar be transparent? – Stack Overflowに書いてあった。 そのtoolbarクラスのinitの中で、 self.opaque = NO; self.translucent = YES; self.backgroundColor = [UIColor clearColor]; して、中身はなくていいので drawRect を設置する。backgroundColorを有効にするのに必要らしい。 – (void)drawRect:(CGRect)rect { // do nothing in here } これだけ。
デバイスの向きがポートレイトなのかランドスケープなのかの判定をしなければならない場合がある。例えば、キーボードの高さを取得するときだ。viewWillAppear:などでキーボード表示のノーティフィケーションを登録して、下記の場合keyboardWasShownでキャッチする。 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardWillShowNotification object:nil]; そうして – (void)keyboardWasShown:(NSNotification*)aNotification { NSDictionary* info = [aNotification userInfo]; CGSize k
このページを最初にブックマークしてみませんか?
『smallmakeprgnote.wordpress.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く