コメント送信機能を追加する前に、rssAppDelegateからHTMLサーバとの通信部分を分離するだーよ。
分離した機能はクラスにまとめるのが人の道。
新規クラスソースの作り方は「iPhoneアプリ開発、その(60)」を参考にしましょう。
BBSProxyクラス
HTMLサーバから掲示板の項目を取り出し、NSArray型の変数として保持する。
HTMLサーバに新しいコメントを書き込む。
掲示板の項目を保持するNSArray型の変数は前回の構造と同じ。
あと、HTMLサーバから掲示板情報を受け取って準備ができたら移譲先に連絡するという機能も持たせます。そのための移譲クラスの定義が
BBSDelegateプロトコル
HTMLサーバから掲示板情報を受け取って準備ができたら呼び出されるメソッドを持つ。
BBSProxyクラスを使う側は、このBBSDelegateプロトコルを継承し実装することで、HTMLサーバから掲示板情報を受け取ったタイミングを知ることが出来るようにするわけですわ。
今回ならRootViewControllerに継承させるのが人の道。
でもって、アプリケーション起動時に以下のように掲示板情報を受け取ってUITableViewに設定する。
掲示板へのコメント書き込みでは、UIButtonからのタップ通知を引き金にして以下のようにUITableViewが更新される。
UITableViewの更新は、RootViewControllerからだと
でおこなえます。
あとはUITableViewDelegateメソッドを以下のように修正してテーブルの対応は完了。
tableView:numberOfRowsInSection:
BBSProxyクラスの掲示板項目を記録した変数から項目数を取り出し返す。
tableView:cellForRowAtIndexPath:
UITableViewCellに名前、日付、コメント用のUILabelをはりつけ、その中にBBSProxyクラスの掲示板項目を記録した変数から取り出した内容をcellForRowAtIndexPathのrow値に対応させて設定していく。
さいごにUIButton、UITextViewは、RootViewControllerのviewDidLoadメソッドでUITableViewを少し小さくし、空いた所に貼付けておき、UIButtonのタップアクションに対応すれば完成。
こんな感じ
という段取りだったんですが...
おお、マイガッ!
RootViewControllerのviewDidLoadメソッドでUITableViewの再配置が出来ないザンス。
どーも、継承してるUITableViewControllerがそういうもんらしくて、エリカ本の204ページにも、UITableView以外にいろいろUIViewを配置したいならUITableViewControllerじゃなくUIViewController使うのが人の道ですわよ的な事を書いてるんですわ。
人として...
しょうがないんで、今回はUISearchBar使う事にします。
本来UISearchBarは検索用のGUIなんですが、今回のアプリはあくまで実験。まじめにUIViewControllerで対応するのは次の画像提示版からってことでひとつ。いちいちUIViewControllerで作り直したくないんで、こいつでいきます。それで満足さ!
虫眼鏡のアイコンは目をつぶろう。ふう
実装はエリカ本283ページからパクりました。
RootViewControllerのviewDidLoadメソッドで
とやって、あとはUISearchBarのdelegateに自分(RootViewController)を設定。
UISearchBar入力が確定したら、以下のメソッドが呼び出されるので、まずテキスト入力ビューを閉じてから、HTTPサーバに新しいコメント書き込みます。
あと、キャンセルボタンの方はコメントを送信しないで編集状態を終えるだけにする。
とうぜん、RootViewControllerはUISearchBarDelegate継承ね。
UISearchBarの利用でUIButtonのタップイベント対応と、UITextViewからのコメント文字列取り出しがワンセットになるわけですな。
虫眼鏡のアイコン消せね~のかな~。
以上、テキスト掲示板編でした。
次回から、画像掲示板編突入!
------------
サンプルプロジェクト:rss7.zip
分離した機能はクラスにまとめるのが人の道。
新規クラスソースの作り方は「iPhoneアプリ開発、その(60)」を参考にしましょう。
BBSProxyクラス
HTMLサーバから掲示板の項目を取り出し、NSArray型の変数として保持する。
HTMLサーバに新しいコメントを書き込む。
掲示板の項目を保持するNSArray型の変数は前回の構造と同じ。
あと、HTMLサーバから掲示板情報を受け取って準備ができたら移譲先に連絡するという機能も持たせます。そのための移譲クラスの定義が
BBSDelegateプロトコル
HTMLサーバから掲示板情報を受け取って準備ができたら呼び出されるメソッドを持つ。
BBSProxyクラスを使う側は、このBBSDelegateプロトコルを継承し実装することで、HTMLサーバから掲示板情報を受け取ったタイミングを知ることが出来るようにするわけですわ。
今回ならRootViewControllerに継承させるのが人の道。
でもって、アプリケーション起動時に以下のように掲示板情報を受け取ってUITableViewに設定する。
掲示板へのコメント書き込みでは、UIButtonからのタップ通知を引き金にして以下のようにUITableViewが更新される。
UITableViewの更新は、RootViewControllerからだと
[self.tableView reloadData];
でおこなえます。
あとはUITableViewDelegateメソッドを以下のように修正してテーブルの対応は完了。
tableView:numberOfRowsInSection:
BBSProxyクラスの掲示板項目を記録した変数から項目数を取り出し返す。
tableView:cellForRowAtIndexPath:
UITableViewCellに名前、日付、コメント用のUILabelをはりつけ、その中にBBSProxyクラスの掲示板項目を記録した変数から取り出した内容をcellForRowAtIndexPathのrow値に対応させて設定していく。
さいごにUIButton、UITextViewは、RootViewControllerのviewDidLoadメソッドでUITableViewを少し小さくし、空いた所に貼付けておき、UIButtonのタップアクションに対応すれば完成。
こんな感じ
という段取りだったんですが...
おお、マイガッ!
RootViewControllerのviewDidLoadメソッドでUITableViewの再配置が出来ないザンス。
どーも、継承してるUITableViewControllerがそういうもんらしくて、エリカ本の204ページにも、UITableView以外にいろいろUIViewを配置したいならUITableViewControllerじゃなくUIViewController使うのが人の道ですわよ的な事を書いてるんですわ。
人として...
しょうがないんで、今回はUISearchBar使う事にします。
本来UISearchBarは検索用のGUIなんですが、今回のアプリはあくまで実験。まじめにUIViewControllerで対応するのは次の画像提示版からってことでひとつ。いちいちUIViewControllerで作り直したくないんで、こいつでいきます。それで満足さ!
虫眼鏡のアイコンは目をつぶろう。ふう
実装はエリカ本283ページからパクりました。
RootViewControllerのviewDidLoadメソッドで
UISearchBar* bar = [[UISearchBar alloc]
initWithFrame:CGRectMake(0,0,280,44)];
[[[bar subviews] lastObject]
setReturnKeyType:UIReturnKeyDone];
bar.showsCancelButton = YES;
bar.delegate = self;
self.navigationItem.titleView = bar;
[bar release];
とやって、あとはUISearchBarのdelegateに自分(RootViewController)を設定。
UISearchBar入力が確定したら、以下のメソッドが呼び出されるので、まずテキスト入力ビューを閉じてから、HTTPサーバに新しいコメント書き込みます。
-(void)searchBarSearchButtonClicked:(UISearchBar*)bar
{
[bar resignFirstResponder];
[proxy speak:bar.text];
}
あと、キャンセルボタンの方はコメントを送信しないで編集状態を終えるだけにする。
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
[searchBar resignFirstResponder];
}
とうぜん、RootViewControllerはUISearchBarDelegate継承ね。
UISearchBarの利用でUIButtonのタップイベント対応と、UITextViewからのコメント文字列取り出しがワンセットになるわけですな。
虫眼鏡のアイコン消せね~のかな~。
以上、テキスト掲示板編でした。
次回から、画像掲示板編突入!
------------
サンプルプロジェクト:rss7.zip