HOW-TO: IconedTextFieldCell

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • HOW-TO: IconedTextFieldCell

    Auf einer bekannten Mailingliste bei Apple lese ich immer wieder folgende Frage: Wie bekommt man ein Icon + Text in einem NSTableView oder NSOutlineView, also z.B. eine Darstellung wie im Finder? Daher mˆchte ich hier einen Lˆsungsweg vorschlagen, der f¸r mich ganz gut funktioniert hat.

    Zun‰chst erstellt man eine neue Klasse, die von NSTextFieldCell abgeleitet ist. Diese Klasse mufl die Methode drawInteriorWithFrame ¸berschreiben. Der Trick ist nun der,
    dass man in dieser Methode zun‰chst das Icon zeichnet und danach via [super drawInteriorWithFrame ...] den Text von der Superklasse zeichnen l‰sst. Damit der Text nicht ¸ber das Icon gezeichnet wird, passt man einfach die Koordinaten in dem Objekt cellFrame entsprechend an, bevor man die Methode drawInteriorWithFrame in der Superklasse aufruft.

    Wer mˆchte, kann sich meine Klasse von meiner iDisk herunterladen: homepage.mac.com/woeye/FileSharing.html
    AcidWare.net - Better Software For Your Mac
  • RE: HOW-TO: IconedTextFieldCell

    Ein anderes Beispiel, das das macht findet man auch auf seiner Festplatte unter

    /Developer/Examples/AppKit/SimpleBrowser

    Die Klasse FSBrowserCell stellt einen FileNode zusammen mit dem Icon dar, sollte aber als beispiel hierzu auch dienen.

    - titan =)
    - Titan =)

    "In theory, there is no difference between theory and practice.
    But in practice, there is."
    - Jan L.A. van de Snepscheut
  • Hallo M.A.X !

    Danke f¸r Deine Antwort, aber wo mufl das rein ? In die Routine

    Quellcode

    1. - (id)tableView:(NSTableView*)table objectValueForTableColumn:(NSTableColumn*)col row:(int)rowIndex"


    ? Ich habe ein ganz normales NSTableView und eine DataSource Klasse mit den ¸blichen Methoden ! Wo mufl das genau rein ? Und wie ¸bergebe ich ein NSImage ? Kˆnntest Du mal ein (Code-) Beispiel posten ?

    Thx
    Chris
  • Na ja, Max hat ja bereits vorgewarnt, dass der Code nicht 100%ig korrekt sein muss. Wenn der Compiler die Warnung: 'Objekt XY' does not respont to 'irgendeine Methode' ausspuckt, dann bedeutet das, das das Objekt XY die Methode nicht kennt. Sp‰testens dann sollte man mal in die Dokumentation zu dem Objekt schauen. NSTableView kennt halt keine Methode -columnAtIndex:. Stattdessen gibt es die Methode -columnWithIdentifier:. Den Identifier legst Du im Interface Builder fest.
    Wie Du das entsprechende Image in die richtige Spalte/Zeile bekommst, sollte man aus dem Beispiel "SimpleBrowser" erforschen kˆnnen. Hast Du Dir das mal genauer angeschaut? Ich noch nicht, daher erst mal nur ein Hinweis, wie ich da ran gehen w¸rde, um an diese Information zu kommen.

    Michael
  • Nur mal so am Rande:

    So eine Message kann auch kommen, wenn du z.B. zur Klasse (hier NSTableView) und nicht zu einer Instanz dieser Klasse (z.B. die, die du im IB anlegst) referierst und genau so auch andersrum. Das ist der Unterschied zwischen + und - vor der Funktion.
    just BTW :]

    grufl
    MAX