頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


セルの右の方に飾りで警告が出るぞ?

table view でセルの右側に">"とか青いボタンなどがついてることありますよね。

table viewのセルの飾り

↑こういうの。
これを、iPhoneアプリを作ってみよう:第5回 Navigation-Basedアプリ(#3.メニュー画面を作る) - もとまか日記にあるように、
- (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath{
    return UITableViewCellAccessoryDisclosureIndicator;
}
って感じで設定したら、実行時にデバッガコンソールに以下のような警告が出るんです。

WARNING: Using legacy cell layout due to delegate implementation of tableView:accessoryTypeForRowWithIndexPath: in <TableView3Controller: 0x3b0e410>. Please remove your implementation of this method and set the cell properties accessoryType and/or editingAccessoryType to move to the new cell layout behavior. This method will no longer be called in a future release.
一応意図通りに表示してくれるのですが、そのうち使えなくなるかもしれまへんで、と言われちゃびびっちゃいますよね。
調べてみると、こんな記事が。

各セルにアクセサリーを設定する 混沌のiPhone開発ブログ
2009年11月7日追記 iPhone OS 3.0以降では上記のtableView:accessoryTypeForRowWithIndexPath:は使用できません。今のところは一応動きますが、ビルド時に警告が出るようになります。この場合はtableView:cellForRowAtIndexPath:内で UITableViewCellのプロパティaccessoryTypeとeditingAccessoryTypeを用いて通常及び編集時のアクセサリーを設定すると良いでしょう。
ほおおおお!
私のXcodeは3.2.2ですから、そういうことか。
ってことで、記事通りに tableView:cellForRowAtIndexPath:に設定。
このメソッド内ではセルの内容を表示する部分もありますけど、下のコードでは略してます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;//”<”の方
    //cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;//青い方
}
で、無事警告が出ることもなく表示できました!

<< なぜかUIButtonが動かない!  TopPage  タブ+ナビゲーションでタイトルとアイコンの設定 >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/391-fd8d65a8




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad