2009年7月30日木曜日

Cider公開しました

本日、iPhoneソフト用ライブラリーCiderをgithubに公開しました。
とは言うものの、今の所はISTableViewCellクラスしかありません。
今後、便利に使えそうなクラスを追加してフレームワーク的にしていければと思っています。

http://github.com/katsuyoshi/cider/tree/master

さて、ISTableViewCellは、UITableViewCellをテキストの編集が出来る様に拡張したクラスです。
UITableViewCellで用意されているスタイル(レイアウト)そのままで編集が出来る様になります。
UITableViewCellのサブクラスを(別途)用意したり、IBでデザインする事なくテキストの編集が出来る様になるので便利ではないでしょうか。

使い方は簡単で、UITableViewCellを使う様に、ISTableViewCellのインスタンス化時にISTableViewCellEditingStyle...から始まるstyleを指定するだけです。(ISTableViewCell.hに定義があります)

cell = [[[ISTableViewCell alloc] initWithStyle:ISTableViewCellEditingStyleDefault reuseIdentifier:CellIdentifier] autorelease];



下はサンブルのUITableViewCellSampleを実行した時のスクリーンショットです。
上の4つのセルは従来のUITableViewCellで、下の4つがISTableViewCellになっていて、テキストの編集が出来ます。




気になる点/注意点

  • ハイライト時のアニメーション処理をしていないため、文字の色が戻る時に時差があります。

  • textFieldのtextColorを変更する場合はcellに対して設定します。(UITextFieldがhighlightedTextColorを持っていないため)

  • -initWithStyle:reuseIdentifier:でISTableViewCellStyle...から始まるstyleを指定するとUITableViewCellのインスタンスを返します。ISTableViewCellのつもりでtextField/detailTextFieldにアクセスすると例外が発生します。サブクラスを作る時に混乱するのでISTableViewCellを返す様にしました。


もともと、UITextFieldがhighlightedを想定した作りになっていない様なので、highlightさせる事は少ないのではないかと思うので、保留とさせて下さい。
(妙案がありましたら教えて下さい)


追記:
UITableViewのstyleがUITableViewStylePlainかUITableViewStyleGroupedのどちらが使用されているかは、ISTableViewCellのsuperview(=UITableView)で判断しています。
しかし、作り方に依ってsuperviewが得られない場合があり、フォントサイズが適切なサイズにならない場合があります。
その場合は明示的にフォントを指定して下さい。


cell.textField.font = [UIFont boldSystemFontOfSize:17];



デフォルトのフォントサイズは次の様になります。

UITableViewStylePlain

  • ISTableViewCellStyle(Editiing)Default


    • textLabel(textField): 20

    • detailTextLabel(detailTextField): -


  • ISTableViewCellStyle(Editiing)Value1


    • textLabel(textField): 20

    • detailTextLabel(detailTextField): 20


  • ISTableViewCellStyle(Editiing)Value2


    • textLabel(textField): 13

    • detailTextLabel(detailTextField): 15


  • ISTableViewCellStyle(Editiing)Subtitle


    • textLabel(textField): 18

    • detailTextLabel(detailTextField): 14




UITableViewStyleGrouped

  • ISTableViewCellStyle(Editiing)Default


    • textLabel(textField): 17

    • detailTextLabel(detailTextField): -


  • ISTableViewCellStyle(Editiing)Value1


    • textLabel(textField): 17

    • detailTextLabel(detailTextField): 17


  • ISTableViewCellStyle(Editiing)Value2


    • textLabel(textField): 13

    • detailTextLabel(detailTextField): 15


  • ISTableViewCellStyle(Editiing)Subtitle


    • textLabel(textField): 18

    • detailTextLabel(detailTextField): 14


2 件のコメント:

匿名 さんのコメント...

以前Table. Cell内の編集はガイドライン違反でリジェクト対象でしたが、今は大丈夫?

かつよし さんのコメント...

弊社で出しているioTouch freeはTableCell内で編集可能ですが、審査は通っています。

また、Appleが作っているメールの設定はTableCell内でメールアドレスなど編集出来ますので、ioTouch freeはそれに倣って作りました。