Frage

Ich könnte eine sehr einfache Frage stellen, aber ich kann nicht in der Lage sein, dies loszuwerden, die Anforderung ist.

  1. Die Tabelle sollte Bild und einige Text daneben anzeigen. Dazu habe ich zwei Spalten in der Tabelle hinzugefügt
  2. NstableView sollte transparent sein. Zu diesem Zweck habe ich eine CustomNstableView -Klasse in der Override Drawrect -Methode für den Nicht -Hintergrund erstellt und die Zelle nicht zum Nachteil angewiesen.
  3. Jetzt ist die nächste Hürde, wie man ein Bild anzeigt. Ich musste die folgende Methode überschreiben/behandelt

.

- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{

    NSImage *pCellImage = // Get a valid Image ;

    if(tableColumn == nil ) return nil;

    NSString *colName = [tableColumn identifier];
    if([colName isEqualToString:@"firstColumn"]){
        NSCell *pCell = [[NSCell alloc]initImageCell:pCellImage];
        return pCell;
    }else{
        NSCell *pCell = [[NSCell alloc]initTextCell:@"Some text"];
        return pCell;

    }
}

Ich habe TableColumn == nil Bedingung hinzugefügt, wie in der Dokumentation, die er als erstes Mal für jede Zeile angegeben ist Anwesend

Meine Frage ist nun, wie man mit dem Null -Zustand umgeht, auch in dieser Funktion nach dem Einstellen von NSCell für beide Spalten geht es zu einer anderen Delegiertenfunktion

- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

Ich glaube, nachdem ich den Datensatz richtig eingestellt habe, muss ich diese Funktion nicht verwenden.

Mit der folgenden Implementierung stürzt es ab, aber ich kann es nicht herausfinden, was falsch ist,

Ich setze ordnungsgemäße DataSource und delegieren.

War es hilfreich?

Lösung

Haben Sie versucht, SetBackgroundColor anzurufen und die klare Farbe zu übergeben?

[myTableView setBackgroundColor:[[NSColor clearColor]];

Wenn Sie diese Methode verwenden, denken Sie daran, dass der umgebende NSSCrollView den Hintergrund nicht zeichnen soll.

Alternativ erwägen Sie den Hintergrund der Tabelle als Calayer.

In Bezug auf das Zeichnen des Bildes und des Textes in einer einzigen Spalte haben die Entwicklerbeziehungen von Apple eine benutzerdefinierte NSCell veröffentlicht. ImageandTextCell. Sie können diese Zelle mit nstableView- und nSoutlineView -Instanzen verwenden. Diese benutzerdefinierte Zelle befasst sich mit dem Zeichnen eines Bildes und eines Textes in einer einzigen Spalte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top