12

Apple iPhone 時計アプリでは、ユーザーが新しいアラームを追加すると、モーダル ビューがポップアップします。それに似たUIを作ろうとしています。

現在、UINavigationController のルート ビュー コントローラーとして UITableViewController を使用しています。

また、UINavigationController のサブビューとして UIDatePicker を追加しました。

[self.navigationController.view addSubview:mydatePicker];

ただし、UITableview (UITableViewController の行) には約 10 行以上あり、UIDatePicker を追加するとすぐにスクロールしてすべてのセルを表示できません。

UITableView のサイズは UIDatePicker を追加する前と同じサイズであるため、スクロールしてすべてのテーブル セルを表示できるようにするには、サイズを変更する必要があることに気付きました。

サイズを変更するためにいくつかのことを試しましたが、すべて役に立ちませんでした。以下のコードでは、新しい高さとして任意に 50 を選択しました。

まず、境界の高さを変更してみました:

CGRect bounds = [self.tableView bounds];
[self.tableView setBounds:CGRectMake(bounds.origin.x,
                                     bounds.origin.y,
                                     bounds.size.width,
                                     50)];

次に、フレームの高さを変更しようとしました:

CGRect tvframe = [self.tableView frame];
[self.tableView setFrame:CGRectMake(tvframe.origin.x,
                                    tvframe.origin.y,
                                    tvframe.size.width,
                                    50)];

次に、もう少しグーグルで調べた後、contentSizeの高さを変更してみました:

CGSize thesize = self.tableView.contentSize;
thesize.height = 50;
self.tableView.contentSize = thesize;

これらのどれも、UITableView のサイズに影響を与えるようには見えませんでした。スクロールしてすべてのセルを表示することはまだできませんでした。

後で上記と同じ方法をいくつか試しましたが、UITableView ではなく UINavigationController で試しました。これもあまり運がありませんでした。

最後の手段として、ストーリーボード エディターで UITableView のサイズを変更しようとしました。私もこれを理解できませんでした。

ご協力いただきありがとうございます。

4

5 に答える 5

18

UITableViewController クラスリファレンスから、それ:

正しい寸法と自動サイズ変更マスクを使用して、未構成の UITableView オブジェクトを作成します

そして、特にこの動作に対処する iOS 用テーブル ビュー プログラミング ガイドからの引用:

注:管理対象のビューが複数のサブビューで構成されており、そのうちの 1 つだけがテーブル ビューである場合は、テーブル ビューを管理するためにUIViewControllerのサブクラスではなくサブクラスを使用する必要があります。UITableViewControllerクラスのデフォルトの動作はUITableViewController、テーブル ビューがナビゲーション バーとタブ バー (存在する場合) の間の画面全体に表示されるようにすることです。

テーブル ビュー コントローラーで tableView のサイズを設定したくない場合は、UIViewController代わりに a を使用する必要があります。このルートに進む際に考慮すべきその他の事項については、iOS 用のテーブル ビュー プログラミング ガイドに上で投稿したリンクを参照してください。

于 2013-02-10T05:45:43.663 に答える
4

あなたが言及したのと同じ問題がありました。UITableViewController の tableView の高さを変更できませんでした。self.view と self.tableview のフレームと中心を変えてみました。しかし、失敗しました。次に、tableviewのcontentInsetを変更して、トリックで解決しました。

self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 44.0f, 0); // here you can replace 44.0f with your height
于 2014-10-29T13:26:55.347 に答える
0

あなたの本当の問題が何であるかわかりません。ただし、高さを変更すると、次のコードの書き込みUITableViewですべての行が表示されます。UITableView

self.tblView.frame = CGRectMake(0, 0, 320, 50);

試してみてください。

于 2013-02-10T05:51:40.090 に答える
0

サイズを確実に変更するには、UITableView をメイン ビューのサブビューにする必要があります。

フレームは、この変更を行った後に変更する正しい値です。

于 2013-02-10T05:22:28.087 に答える
0

uitabelview を追加する uiviewcontroller を使用する代わりに、uitableview コントローラーを使用しています。これで、uitableview のサイズを変更できます。

于 2013-11-15T20:08:17.103 に答える