0

ストーリーボード経由で「フォーム シート」ビュー コントローラーに UITableView を追加しました。この UITableView をヘッダー ファイルの IBOutlet に接続しました。また、UITableView を dataSource に接続し、View Controller のデリゲート アウトレット (以前はファイルの所有者のプレストーリーボードでした) を control+click で接続しました。

デリゲート メソッド numberOfSectionsInTableView、numberOfRowsInSection、および heightForRowAtIndexPath はすべて呼び出されますが、これらのメソッドの UITableView インスタンスは nil です。また、 cellForRowAtIndexPath が呼び出されることはありません。もちろん、テーブルは作成/表示されていません。

これは、ストーリーボード経由で試みた最初の UITableView です。XIB では、アウトレットを File's Owner に接続するだけで、すべて問題ありませんでした。何がうまくいかないのですか?

コード:

ヘッダファイル

@interface LoginPopupViewController : UIViewController <UITextFieldDelegate, UITableViewDataSource, UITableViewDelegate> {
    IBOutlet UITableView *loginTable;
}

デリゲートの実装

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{    
    return 1;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    return 44.0;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 2;
}
4

1 に答える 1

0

プロトタイプ UITableView のサイズを小さくして高さを小さくすると、必要な 2 つのプロトタイプ セルに簡単に収まるにもかかわらず、セルを追加するには小さすぎるとコードが判断したようです。デフォルトの高さの新しい UITableView を追加すると、すべてが機能しました。UITableView のサイズを変更できないと思います。

テーブル ビューのサイズは完全に変更できます。つまり、ストラットとスプリング (自動レイアウトを使用している場合は制約) を修正する必要があります。

詳しく説明すると、これは次の (簡単に確認できる) 条件の組み合わせであると確信しています。

  1. ストーリーボード内のビュー コントローラーのシミュレートされたメトリックは、デバイス (またはシミュレーター デバイスの設定) よりも高くなっています。たとえば、ストーリーボードが 4 インチの iPhone をシミュレートしていて、3.5 インチの iPhone でテストしているとします。
  2. テーブル ビューのストラットとスプリングは固定上部マージン、固定下部マージン、柔軟な高さ (または同等の自動レイアウト制約) です。これはデフォルトのストーリーボードの動作です。
  3. テーブル ビューの高さが、View Controller のシミュレートされた高さと実際の高さの差よりも小さい。

上記のすべてが当てはまる場合、テーブル ビューは、上下の余白を維持するために高さゼロにサイズ変更されます。高さが維持されるようにストラットとスプリング(または拘束)を調整するだけで解決します。たとえば、柔軟な高さをオフにしてみてください。

于 2013-07-10T17:33:25.457 に答える