web-dev-qa-db-ja.com

ストーリーボードIBのプロトタイプセルにアイテムを追加するときの奇妙なエラー

私はかなり大きなプロジェクトを持っています(20シーンまで)。その1つは、カスタムUITableViewControllerクラスを持つTableViewControllerです。セルに再利用識別子を指定し、それにラベルを追加しました。 Ctrlキーを押しながらUITableViewControllerヘッダーファイルにラベルをドラッグしてアウトレットを作成しようとすると、次のエラーが表示されます。

エラー:無効な構成:接続 "tableInfoView"には、宛先としてプロトタイプオブジェクトを含めることはできません。

これは何ですか?明らかな何かを見落としていますか?または、カスタムセルクラスを作成し、そこにアウトレットをドラッグする必要がありますか?もしそうなら、UITableViewControllerから各セルに一意に表示されるデータをどのように指定しますか?

43
Alex Godbehere

実際、UITableViewデリゲートビューコントローラーの動的セルプロトタイプからアウトレットを作成することはできません。

UITableViewCellをサブクラス化し、このクラスをプロトタイプに関連付ける必要があります。

次に、Ctrlキーを押しながらラベルからUITableViewCellサブクラスヘッダーファイルにドラッグします。

最後に、UITableViewCellヘッダーファイルをインポートした後、デリゲートコードでこのアウトレットにアクセスできます。

これはApple there "動的行コンテンツのテクニック"セクションで文書化されています。

67
dulgan

または、ラベルにタグ(100など)を付けて使用することもできます

myLabel = [myTableView viewForTag:100];

ラベルを取得する

10
Martin Lockett

ラベルにタグを付けると、Table ViewのviewWithTagのように、ViewControllerのどこからでもラベルにアクセスできます。

    UILabel *destinationLabel = (UILabel *)[self.tableView viewWithTag:1];


    destinationLabel.text = @"Label Destaination";
2
Reaper

私自身も同じエラーがありました。将来の読者にもう1つの重要な根本原因を追加するだけです。

私の場合、あるプロトタイプセルから次のプロトタイプセルにコントロール(この場合はボタン)をコピーしましたが、アクションは引き続き隣接セルを参照していました。私のテーブルにはいくつかの異なるプロトタイプセルがあります。

事実、プロトタイプセルに適切に接続されたUITableViewCellの適切なサブクラスであるという事実により、実際に間違いを見ることは困難でした。

2
Hermann Klecker

私は同じ問題に直面しましたが、後でそれは単なる愚かな間違いであることが判明しました。 誤ってCellからラベルをコントローラーの@interface

これもあなたの問題かもしれません。一度クロスチェックしてください。

1
thesummersign