おはようございます。
いよいよ本格的な夏になりました。
寒いより暑い方がいい、「オレは夏型だ!」と言っていてもやはり暑い、「早く秋にならないかな~」と勝手なことを言っている。
・・・
iPhoneアプリの開発
今回は設定画面を作った。
設定は、アプリの中の特定の領域に格納されアプリの終了では消されない。
iPhoneではこれも便利に出来ていて、NSUserDefaultsと言うクラスがありアプリケーション起動時にその領域は自動的にできる。
さらに、そのアプリを初めて起動したときはその設定も存在しないので、デフォルトの設定値をレジストリに設定することも出来る。
作った画面はこれだ・・・
ルート画面でスパナのアイコンをタップすると画面がくるりと反転してこの画面になる。
この画面は、ルートと同じようなテーブルビューを使っているが、グループ表示にしてあるのでまるで雰囲気が違う。
テーブルのセルの中にスイッチとかセグメントコントロールを配置して、2値択一・多値択一に対応している。
3グループあり3つ目はサーバーの設定なので通常のセルに文字を表示している。
この設定は、今のところアプリの動作には全然影響しない。
今のところ、ユーザーデフォルトの勉強のために作っている。
このユーザーデフォルト値は、すべてのビューで使用可能なように起動直後に「iGalleryAppDelegate」クラスのクラス変数に読み込まれ、他のクラスから自由に利用できるようにしてある。
・・・
・・・
このテーブル表示をグループ化してみてよく分かった。
テーブルのデリゲートメソッドにテーブルのセルを一行ずつ表示する「cellForRowAtIndexPath」と言うメソッドがあるが、これは一行ずつのセルが画面に現れた瞬間にそのセルについてどのように表示するかと言うことを書くようになっているということだ。
そしてそのセルが以前に一度表示されているものならばそのセルをそのまま表示し、初めて表示するものならそのとき初めてそのセルについて細かい表示のための動作をする。
つまり、最初からすべてのセルをデータの数だけ表示するのでなくそのとき画面に表示するものだけを処理することで、効率的な動作をしている。
・・・
グループ分けは「Section」というくくりになるが、このセクションごとに「CellIdentifier」と言うのが必要になるらしい。
どうもこれの意味がよくわからないが、その通りにするとうまく表示してくれるのであわせているが、ときどき「Identifierがどうとかこうとか~」と言ってエラーになることがあるのでそれを回避しながら作っている。
この辺りはもう少し経験が必要なんだろう。
・・・
サーバー関係の設定は、そのセルをタップするとインプットボックスで入力するようにしているが、パスワードの入力は全部「*」で表示するとか、URLの入力のときはURL用のキーボードを表示するとか、細かい調整が残っている。
・・・
少しずつ形が出来てくるが、写真をタップして全画面表示をしたり、フリーハンドの落書きやテキストを重ねたり合成したりトリミングをしたり、もう少し画像関係を充実させたい。