0

UITableView でセッションを表示する iOS アプリケーションを開発しています。私は現在、自分のデータを表すカスタム tableviewcell を開発している段階です。

イベントの種類に基づいて、tableviewcell の小さなバーの背景色 (青またはオレンジ) を変更しています。何らかの理由で、色付けがオフになり、テーブルビューが追加されるべきではない別のセルを追加します。下の画像を参照してください。

ここに画像の説明を入力

最初のセルに注目してください。タイプは「ISKE」なので、オレンジ色である必要があります。これは正しいです。タイプが「ISKA」の 2 番目のセルに注意してください。これで、右側のバーは青色になるはずですが、明らかにそうではありません。ただし、日付のフォントの色が正しい色であるため、奇妙です。また、最後のバーが表示されていることに注意してください。使用できる余分なセルはありません。

なぜこれが起こっているのかわかりません。誰かが私を正しい方向に向けてくれることを願っています。私の get cell メソッドは次のとおりです。

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;
}
4

3 に答える 3

0

あなたのLoadNib使い方は間違っているようです:

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

つまり、所有者はそれ自体がセルであることを意味します。私はするだろう

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

それが役に立てば幸い

于 2013-09-16T11:49:44.550 に答える