2013-09-16 6 views
0

Я разрабатываю приложение iOS, которое показывает сеансы в UITableView. В настоящее время я занимаюсь разработкой пользовательского tableviewcell для представления моих данных.tableView добавляет дополнительную (пустую) ячейку

Основываясь на типе события, я меняю цвет фона на маленьком баре в таблице tableviewcell (синий или оранжевый). По какой-то причине раскраска выключена, и в tableview добавлена ​​еще одна ячейка, которую не следует добавлять. См. Изображение ниже.

enter image description here

Обратите внимание на первую клетку .. она имеет типа: «ISKE» так должен быть оранжевым, это правильно. Обратите внимание на вторую ячейку, имеющую тип: «ISKA». Теперь панель справа должна иметь синий цвет, чего явно нет. Странно, потому что цвет шрифта даты соответствует правильному цвету. Также обратите внимание на отображение последней полосы, пока нет дополнительной ячейки.

У меня нет подсказки, почему это происходит. Надеюсь, кто-то может указать мне в правильном направлении. Моего метод прибудет клетку, как следует:

public override UITableViewCell GetCell (UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath) 
{ 
    Session session = ObjectModel.Current.AllSessions.ElementAt (indexPath.Row); 

    SessionTableViewCell cell = tableView.DequeueReusableCell (session.SessionEvent.EventTitle) as SessionTableViewCell; 

    if (cell == null) 
    { 
     cell = new SessionTableViewCell(); 
     var views = NSBundle.MainBundle.LoadNib ("SessionTableViewCell", cell, null); 
     cell = Runtime.GetNSObject (views.ValueAt (0)) as SessionTableViewCell; 
    } 

    if (session.SessionEvent.EventTitle == "ISKE") { 
     cell.SessionEventColor = UIColor.FromRGB (255, 165, 0); 
     cell.SessionDateFontColor = UIColor.FromRGB (255, 165, 0); 
    } else { 
     cell.SessionEventColor = UIColor.FromRGB (80, 124, 191); 
     cell.SessionDateFontColor = UIColor.FromRGB (80, 124, 191); 
    } 

    cell.SessionDay = session.SessionDate.DayOfWeek.ToString().ToUpper(); 
    cell.SessionTime = session.SessionDate.ToString ("HH:mm"); 
    cell.SessionDate = session.SessionDate.Day.ToString().ToUpper(); 
    cell.SessionSpeaker = "testspeaker"; 
    cell.ImgBgView.Layer.BorderColor = UIColor.FromRGB (206, 206, 208).CGColor; 
    cell.ImgBgView.Layer.BorderWidth = 1.0f; 

    cell.SelectionStyle = UITableViewCellSelectionStyle.None; 
    cell.SessionTitle = session.SessionTitle; 
    cell.SessionEvent = session.SessionEvent.EventTitle; 
    cell.SessionRoom = session.SessionRoom; 

    return cell; 
} 

ответ

1

Проверьте источник данные, UITableView высоту и высоту ячейки указана.

+0

Лучше Вы упоминаете его в качестве комментария. Он не определяет ответ ... –

+0

Высота ячейки - 84 пикселя, что аналогично моему GetHeightForRow. Высота моего стола - 416 пикселей (полный экран). Не знаете, почему это имеет значение? – Mittchel

+0

Я нашел проблему. Я думал, что я работаю с сетчатыми пикселями. Таким образом, граница thingy была вдвое больше размера ячейки таблицы, которая заставляла ее визуализировать двойную, я думаю. Prasad_R указал мне в правильном направлении. – Mittchel

0
cell = new SessionTableViewCell(); 
var views = NSBundle.MainBundle.LoadNib ("SessionTableViewCell", cell, null); 
cell = Runtime.GetNSObject (views.ValueAt (0)) as SessionTableViewCell; 

Вам не нужно называть конструктор И LoadNib. LoadNib должно быть достаточно. Вызов обоих может привести к неприятностям. Так что ваш код должен быть:

var nibs = NSBundle.MainBundle.LoadNib ("SessionTableViewCell", cell, null); 
cell = Runtime.GetNSObject (nibs.ValueAt (0)) as SessionTableViewCell; 
+0

Спасибо за ваш ответ. Я также думал, что это проблема, но, к сожалению, это не так. Проблема все еще возникает. Еще раз спасибо за ваш ответ. – Mittchel

0

вашего LoadNib использование выглядит неправильно:

var views = NSBundle.MainBundle.LoadNib ("SessionTableViewCell", cell, null); 

это означает, что владелец является клеткой на своем собственном. Я хотел бы сделать

var views = NSBundle.MainBundle.LoadNib ("SessionTableViewCell", this, null); 

надеюсь, что это помогает

+0

Еще раз спасибо за ответ. Это тоже не помогло. – Mittchel

Смежные вопросы