.-- --

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 comment(-) trackback(-)
.30 2011

カスタムURLスキームの扱いについて Vol.1

もういくつ寝ると除夜の鐘

いや、この記事を書いているときは明日ですよ

暮れましてこんばんは、UTOでございます。

今日はURLスキームについてまとめます。

スポンサーサイト
.16 2011

UIKitのアニメーション絡みが痒いです

どうもHAYABUSAです。

久々の投稿ですが、TableView絡みでずっと悩んでた謎がなんとなく解明されてきた感があります。

ざっくりと悩んでた内容は、
「UITableViewをアニメーションありで編集モードを切り替える際、reloadDataを呼ぶとアニメーションがキャンセルされる」
という謎です。(performSelectorディレイでreloadDataなんて付け焼き刃なことはしません(^^;)
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
のanimatedをYESで編集モードに移行するパターンですね。

例えばTableViewのセル内にUISwitchとか配置してカスタムしたいときってありますよね?
んで編集モードがONかOFFかでそれらのコントロールを表示/非表示させたいときもあると思います。
そういったとき今までは、UITableViewのデリゲートメソッド
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
内で直接セルにUISwitchを配置したり、Editモードか否かでの表示ON/OFFとかの制御をすべてやっちゃってたんです。
でもそうしちゃうと、このデリゲートメソッドがコールバックされる=reloadDataをコールしないと制御できなくなるんですよね…

調査した結果どうやら、
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
メソッドは、
1) UIViewController
2) UITableView
3) UITableViewCell
の3クラスに用意されていて、それぞれ上記の順番でコールされるようです。
とくにUITableViewControllerでビューコントローラを作ってる場合なんかは知っておくと便利かもです。

なので今回のケースとしては、
3) UITableViewCell
のサブクラスを作り、オーバーライドしたsetEditingメソッド内で編集モード状態でのコントロール制御をやってあげることで解決しました。
コントロールの表示/非表示はもちろん、アニメーションも思うがままなので、編集モードになったらUISwitchがスライドしながら消える、といったようなアニメーションもできちゃいます。
わざわざセルをサブクラス化するのが面倒だったために遠回りしちゃってたんですね…orz

テーブルの最下行に新規追加用セルを入れたいときなんかも、面倒でもビューコントローラのsetEditing内で、insertRows/deleteRowsをやってあげるのが正解です。

最後に、今辿り着いた答えとしては、「編集モードを切り替える際にreloadDataをしないといけないような処理/制御はやっちゃいけない(!?)」
…現状はまだ、!?の段階ですが、今後も実装しながらいい具合のコーディングスタイルを確立していこうと思います。

しかしTableView…癖が強い(;´Д`
.11 2011

勉強メモ 4

こんばんは、matsudaです。

久しぶりの投稿です;;
基礎の基礎で簡単なことですが、
最近の勉強メモに書いたことをいくつか書きます!

○何秒か後にあるメソッドを呼びたい時や、定期的に繰り返しメソッドを呼びたい時は→NSTimer

[NSTimer scheduledTimerWithTimeInterval:2.0f //タイマーが呼ばれる間隔
target:self
selector:@selector(resetPosition:) //呼び出すメソッド
userInfo:nil //処理するオブジェクト
repeats:NO]; //リピートするかどうか

呼び出されるメソッド↓↓
- (void)resetPosition:(NSTimer*)sender
{
//処理を記述
}

タイマーを止めたいときは↓↓
[timer invalidate];


○TableViewをスクロールさせないようにする
self.tableView.scrollEnabled = NO;

○TableViewCellをハイライトさせないようにする
cell.selectionStyle = UITableViewCellSelectionStyleNone;


○TablevViewを更新する
[self.tableview reloadData];
 ※reloadしてもviewDedLoadは呼ばれないらしい。。


・・・と、このくらいです。
次回からは、最近作っている『ヨンコマン』というアプリでの勉強メモを書いていきたいと思います^^;
 HOME 

ブログ内検索

関連リンク

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    Developer登録完了...したのはいいけど


  • Ueda:
    ...



リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。