いよいよ残るは画像をHTTPサーバに送り込む機能の実装。
 で、肝心の画像はどこから?ってなるとやっぱカメラとかアルバムからでしょう。
 SMS/MMSはどうやってんねやろと

テン・シー・シー-1
↑こいつね

 カメラボタン押してみると

テン・シー・シー-2


 とUIActionSheetが出るようになってました。
 ま、私のは静止画しか考えてないのでビデオは抜いて

 写真を撮る
 既存の項目を選択

 とします。
 ここらへんの実装方法は木下誠さんの連載

実践! iPhoneアプリ開発:
 カメラアプリの作り方(1) - イメージピッカーのためのアクションシートを作る
 カメラアプリの作り方(2) - カメラで写真を撮る
 カメラアプリの作り方 (3) - 写真を縮小して表示する
 カメラアプリの作り方 (4) - 写真にエフェクトをかける

 が非常にピンポイントで参考になりました。
 あと小池邦人さんのサイト、特に2009/06/06~2009/10/20なんて、かなり参考になりそう。

Koike ToolBox

 この人は最近iPhone開発本を出した藤本裕之さんとともに白黒Mac時代からのたたきあげザンス。

Mac OS X/iPhoneのためのCocoaプログラミング入門 (単行本)

 で、実際の実装。
 上のUIActionSheetを出すためのボタンとしては、手っ取り早くUIBarButtonItemを使います。

self.navigationItem.leftBarButtonItem
= [[[UIBarButtonItem alloc] initWithTitle:@"画像"
style:UIBarButtonItemStylePlain target:self
action:@selector(sendImage)] autorelease];

 とするだけ。
 これでナビゲーションバーに"画像"ってボタンが現れ、押されると自分のsendImageメソッドが呼び出される。

$テン・シー・シー-3
こんな感じ

 sendImageメソッドでは以下のようにカメラが使えるか(iPod touchの事考えて)調べて、使えるなら上記のUIActionSheetを表示しての選択、そうでないなら直接アルバムからの選択をおこなわせればいいわけですわ。
 ちなみに小池さんのサイトで書かれてたけど、カメラがあるかないかチェックしてないアプリは審査ではねられるそうです。

$テン・シー・シー-4

 カメラが利用できるかどうかはUIImagePickerControllerのisSourceTypeAvailable:クラスメソッドにUIImagePickerControllerSourceTypeCameraを指定した返り値がYESかNOかで判断できます。

 で肝心のカメラ撮影、アルバムからの画像選択なんですが、どちらもUIImagePickerControllerのインスタンスに頼ります。
 UIImagePickerControllerの移譲先インスタンスとして自分を指定し

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo

 が呼ばれたなら引数imageを使って画像送信し、UIImagePickerControllerの処理を終わらせる。

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

 が呼ばれたなら、なにもせずにUIImagePickerControllerの処理を終わらせる。

 これでOKです。
 ワーニングがうざい人はRootViewController.hでRootViewControllerに以下のプロトコルを継承させましょう。プロトコルについては「iPhoneアプリ開発、その(89)」を参照。

 UIActionSheetDelegate
 UINavigationControllerDelegate
 UIImagePickerControllerDelegate

 うりゃっと実行。

 さすがにシミュレータはカメラまでシミュレーションしてくれないっすね。いきなりアルバムに飛びやがる。しょーがねえ、まずはアルバム選択で開発を進めておいて、画像送信が出来た時点で実機テストいってみましょう。

 画像送信はBBSProxyクラスにsendImageメソッドを用意して実装する。
 こいつは次回!

------------
サンプルプロジェクト:rss9.zip