- ベストアンサー
UITableVCのセルの表示位置を変える方法
- UITableVCのセルの表示位置を変える方法について教えてください。
- UITableVCでセルの表示位置を調整する方法を知りたいです。
- UITableVCのセルを表示する位置を変更する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 > その通りで、ナビゲーションコントローラーを設置すると大丈夫ですね。 > しかし全てナビゲーションコントローラーを設置するとストーリーボードが見辛くてしょうがなくなるし、 > タイトルやボタンが最初から設置されていて煩わしいのでTableViewControllerで試行錯誤していました。 ナビゲーションコントローラーを使うけど、ナビゲーションバーを表示させないように することは可能です。UINavigationControllerにnavigationBarHiddenというプロパティが あるので、それをOFFにすればいいだけです。それで今回の質問に対応することもできます。 ただ、表示位置の調整のためだけにナビゲーションコントローラーを使うのは、 本来の目的と違う使い方をしているので、後になって何か副作用的な影響を与えないか というのが少し気がかりな点です。 > しかし、TableViewControllerはヘッダにタイトルなどを表示させる事は出来ないのですかね? はい。 TableViewControllerは、画面全体をテーブルビューにする機能しかなく、 そのテーブルビューの中にスクロールしない領域を持たせることはできないです。 普通、何かテーブルを表示しようと思ったら、それは何を表示しているものかという 説明表示が必要ですから、結局TableViewControllerを単独で使うケースはほとんどないと 思います。 で、TableViewControllerを使うなら、UINavigationControllerと組み合わせるか、 コンテナViewControllerの機能を使って他のViewControllerと組み合わせて表示する ケースがほとんどだと思いますし、そもそもTableViewController自体あまり使われなくて、 通常のViewControllerに画面部品を配置して、それら部品の一つとしてUITableViewが 配置されているというケースが一般的だと思います。 ただ、通常のViewControllerにUITableViewを配置した場合、少し気をつけなければ ならない点があります。 http://j7lg.tumblr.com/post/8427539581/uiviewcontroller-uitableviewcontroller にあるように、UITableViewControllerが自動でやってくれていたことを自分で実装して おく必要があります。 特にテーブル表示開始時に、選択状態のクリアとスクロールバー点滅処理をちゃんやらないと Appleのユーザーインターフェースガイドライン違反になり、AppStore公開審査で 不合格となるらしいです。
その他の回答 (1)
- Lchan0211b
- ベストアンサー率61% (573/930)
この件は、ナビゲーションコントローラー配下のテーブルビューコントローラー なら問題ないのに、質問にあるように直接テーブルビューコントローラーを 配置した場合だけ問題が発生するので、AppleのSDKのバグじゃないの?って 言ってる人もいます。 (参考) http://stackoverflow.com/questions/18900428/ios-7-uitableview-shows-under-status-bar 私だったら、そのテーブルビューコントローラーのviewDidLoadに self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0); self.tableView.contentOffset = CGPointMake(0, -20); と書いて解決させます。本来は20という固定値を書くべきじゃなくて、 テザリング時等でステータスバーのサイズが変わる場合もありますが、 その分はシステムが自動調整してくれるの20固定でもちゃんと動きます。 > 上部に少し余白を作り、そこにボタンやラベルなどを設置したい このボタンやラベルは、テーブルビューのスクロールと一緒にスクロールする部品ですか? そうであれば、UITableViewの中にtableHeaderViewというプロパティがあるので、 そこにボタンやラベルを配置したビューを設定すればよいです。 テーブルビューのスクロールに連動しないで画面に残るボタンやラベルなどを設置したい のであれば、ViewController上にボタンやラベルを配置し、それとは別の部品として UITableViewを加える形にすればよいです。
お礼
回答ありがとうございます! その通りで、ナビゲーションコントローラーを設置すると大丈夫ですね。 しかし全てナビゲーションコントローラーを設置するとストーリーボードが見辛くてしょうがなくなるし、 タイトルやボタンが最初から設置されていて煩わしいのでTableViewControllerで試行錯誤していました。 教えてもらったように記述したところ、綺麗に電池に重ならず表示させることが出来ました! しかし、TableViewControllerはヘッダにタイトルなどを表示させる事は出来ないのですかね? 「TableViewController ヘッダ」などで検索すると、UITableViewに関連したページが表示されます。 そうなると、TableViewControllerってただデータを羅列するだけで、これを使う場面はよっぽどシンプルな表示をしたい時だけなんじゃないかと思ってしまいますが、そういうものなのでしょうか。 自分はスクロールしない形でヘッダにボタンなどのツールを組み込みたいので、ViewControllerにUITableViewを設置したものを新たに作ろうと思います^^
お礼
回答ありがとうございます TableViewControllerはかなり使われる場面が限定されているんですね。 URLを参考にユーザーインターフェースの注意点を意識しながらUITableViewの実装に取り組んでみます!