Я создал пользовательский UITableViewController
, Cell и Source в моем проекте. Контроллер и Ячейка были первоначально созданы как шаблон UIViewController для iPhone, так что я получил частичный класс в паре с XIB-файлом. У меня такая же настройка уже работает с другой таблицей, и я следил за тем же процессом (я думаю), чтобы создать это, поэтому я понятия не имею, почему я получаю эту ошибку.Пользовательский UITableViewCell, GetCell throws UnknownNSKeyException
Это мой GetCell
в TableViewSource
классе
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.
Я имею в виду, что это относится к проблеме в IB, где я создал интерфейс клеток, lbl_address
является UILabel, что находится внутри UITableViewCell
. Я пытаюсь поиграть с некоторыми вещами в IB, но это может быть довольно бесит, если вы не делаете это правильно в первый раз. Надеюсь, кто-то узнает эту ошибку и поставит меня прямо.
EDIT
В отсутствие найти ответ на это я решил, чтобы избежать нагрузки от кончика пера и сделали следующие изменения в мой код:
Новый 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);
}
Надеется, что это помогает кто-то там :)
Извините за долгую задержку в ответе! После того, что вы сказали, я не мог найти никаких предупреждений в xib или других торговых точках. Я обнаружил, что в этом случае мне пришлось избегать загрузки из nib, просто создав конструктор для ячейки, которая использовала базовый конструктор 'UITableViewCell' (' UITableViewCellType', 'string'). –