0

プロジェクトにカスタムUITableViewController、セル、およびソースを作成しました。Controller と Cell はもともと iPhone UIViewController テンプレートとして作成されたので、XIB ファイルとペアになった部分クラスを取得しました。私はすでに別のテーブルで同じセットアップを行っており、同じプロセス (と思う) に従ってこのテーブルを作成したため、このエラーが発生する理由がわかりません。

これは私GetCellTableViewSourceクラスです

public override UITableViewCell GetCell (UItableView tv, NSIndexPath path)
{
    MyCell oCell;
    NSArray oViews;
    //
    oCell = tv.DequeueReusableCell ("MyCell") as MyCell;
    //
    if (oCell == null)
    {
        oViews = NSBundle.MainBundle.LoadNib ("MyCell", tv, null);
        oCell = Runtime.GetNSObject (oViews.ValueAt (0)) as MyCell;
    }
    //
    oCell.UpdateWithData (MyDataCollection[path.Row]);
    //
    return oCell;
}

ペン先をロードしようとする行で例外が発生します。

Objective-C 例外がスローされました。名前: NSUnknownKeyException 理由: [ setValue:forUnidentifiedKey:]: このクラスは、キー lbl_address のキー値コーディングに準拠していません。

lbl_addressこれは、内部にある UILabelのようにセル インターフェイスを作成した IB の問題を指していると考えていますUITableViewCell。私はIBでいくつかのことをいじろうとしていますが、最初のラウンドで正しくやらないとかなり腹立たしいことがあります. うまくいけば、誰かがこのエラーを認識して、私を正してくれます.

編集

これに対する答えが見つからないため、ペン先からのロードを避けることを選択し、コードに次の変更を加えました。

の新しいGet CellメソッドMyTableViewSource

public override UITableViewCell GetCell (UITableView tv, NSIndexPath path)
{
    MyCell oCell;
    //
    oCell = tv.DequeueReusableCell ("MyCell") as MyCell;
    //
    if (oCell == null)
        oCell = new MyCell ("MyCell");
    //
    oCell.UpdateWithData (MyDataCollection[path.Row]);
    //
    return oCell;
}

の新しいコンストラクタMyCell

public MyCell (string sIdentifier)
    : base (UITableViewCellStyle.Default, sIdentifier)
{
    // Set up the contents of the cell in the absence of loading from the nib
    txt_name = new UILabel ()
    {
        Font = UIFont.SystemFontOfSize (15),
        TextColor = UIColor.LightGray
    };
    img_profile = new UIImageView ();
    //
    // Make sure to add the controls to the content view!
    ContentView.Add (txt_name);
    ContentView.Add (img_profile);
}

これが誰かを助けることを願っています:)

4

1 に答える 1

0

これは通常、削除された要素が原因ですが、xib の以前の接続アウトレットはまだ有効なままです。

次の手順を試してみます。

シブを開きます。セルを右クリックします。そのキー名の近くに黄色の警告が表示された場合は、それを削除します (x ボタン)。

これで問題が解決するかどうか教えてください。

于 2013-05-11T13:04:38.700 に答える