UITableViewCellにカスタムコントロールを追加すると(ストーリーボードのテーブルセルにUILabelをドラッグして)、実行時にコンテンツが表示されなくなります。テーブルの行を(選択するために)タップすると、コンテンツは表示されますが、白です。
プロジェクトのセットアップ:(概要:UITableViewとコンテンツを作成するための数行のコードを使用して超最小のストーリーボードプロジェクトを作成します):
新しいプロジェクト、シングルビューアプリケーション、Xcode 4.5.2は、ストーリーボードを使用します。これにより、iOS6を対象としたプロジェクトが作成されます。
テーブルビューコントローラをストーリーボードにドラッグします。ストーリーボードは、ビュー、ビューに含まれるUITableView、およびそのテーブル内のデフォルトのUITableViewCellを作成します。
テーブルビューコントローラを初期シーンとして設定します。
UITableViewCellの再利用識別子文字列を設定します(ストーリーボードエディターで)。
UITableViewのサブクラスである新しいファイルを作成し、最小限の在庫データを入力して、「XX行目」のデータテキストを入力する行をいくつか取得します。
プロジェクトを実行します。データは期待どおりに表示され、「行0」、「行1」などのデータが数行表示されます。問題はありません。
次に、ストーリーボードのテーブルセルにラベルをドラッグします。プロパティについては何も変更しません。ラベルのテキストは、黒い文字で「ラベル」とだけ言っています。
次の画像を参照してください:http://www.codexlumen.com/issue/storyboard.png
プロジェクトを再度実行します。
私が期待すること:テーブルの行の行に「ラベル」が黒いテキストで表示されるようになりました。
私が実際に見ているもの:以前とまったく同じです。「ラベル」のテキストはまったく表示されません。
さて、ここに楽しい部分があります:
まだ実行中ですが、テーブルの行をタップして選択します。これで、行が青で強調表示され、ラベルコントロールを配置した位置に「ラベル」が白で表示されます。
次の画像を参照してください:http://www.codexlumen.com/issue/hilight.png
つまり、UILabelはそこにあり、強調表示されていない行に描画されていないだけです...
理由がわからない。
他のいくつかのコメント:
- 私はどんな種類のカスタムテーブルセルサブクラスも使用していません。
- プロジェクトに何も追加したり、上記以外の手順を実行したりしませんでした。
- 再利用識別子文字列を設定し、UILabelをセルにドラッグすることを除いて、ストーリーボードのUITableViewまたはUITableViewCellオブジェクトのプロパティを変更しませんでした
- 4sとシミュレーター(シミュレーターをさまざまなデバイス/ OS構成に設定)の両方で実行してみました
- ラベルのプロパティ(黒の背景、緑のテキストなど)を変更してみました。無効。設定したプロパティに関係なく、視覚的な動作は同じです(ただし、テキストを拡大すると「ラベル」が大きくなります)
これは100%ストーリーボードです。コードでUIオブジェクトを作成していません。コード内のUIへの唯一の参照は、以下に示すように、テーブルセルに入力するコードです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = [NSString stringWithFormat:@"Line %i", indexPath.row];
return cell;
}