Domanda

Sto cercando di visualizzare un NSTableView di:

| Foto | filename |

Ho creato il NSTableView in IB e delegata a una classe. Nella classe, ho aggirato un modello solo per ottenere un'implementazione POC e ha creato i metodi delegato di origine dei dati. Essi popolano le celle di testo più che bene. Tuttavia, ora sono nella fase in cui la prima cella deve contenere una piccola miniatura dell'immagine.

Quello che voglio fare (e sono sicuro che è stupido-semplice) è afferrare l'icona dell'immagine - ed è giusto presumere che tutti i file sono file JPEG e hanno le miniature incorporati - e mettere l'icona, scalata a 64x64 nella cella di tabella. C'è un sacco di codice su come generare le miniature, ma non vedo tanto che mi viene a codice funzionante. Ecco quello che ho:

  # This works if I am only populating text values in the when 'Image'
  def tableView_objectValueForTableColumn_row_(image_table, column, row)
    thumbnailImage(75)
    case column.headerCell.stringValue
      when 'File Name'
        (0..99).to_a[row].to_s
      when 'Image'
        # here's where I want to return a square 64x64 image or ImageCell
        thumbnailImage(64)
      else
        '???'
    end
  end

  # Creates square thumbnail
  def thumbnailImage(size)
    file = "file://localhost/Users/sxross/Downloads/iStock_000004561564XSmall.jpg"
    image = CGImageSourceCreateWithURL(CFURLCreateWithString(nil, file, nil), nil)
    thumb = CGImageSourceCreateThumbnailAtIndex(image, 0, nil)
    thumb
  end

  def numberOfRowsInTableView(view)
    100
  end

Quello che sto alle prese con è ciò che i passaggi mancanti sono per ottenere il metodo thumbnailImage di fornire me con qualcosa che può essere un oggetto dati appropriati per tornare dalla sorgente dati.

Ogni aiuto è incredibilmente apprezzato.

A proposito: IknowIknowIknow, dovrei usare MacRuby ma non funziona sul mio 32 bit Core Duo. Purtroppo.

È stato utile?

Soluzione

  

Ho aggirato un modello ...

Non farlo. In Cocoa, è più facile fare le cose con un modello che senza.

  

Quello che sto alle prese con è ciò che i passaggi mancanti sono per ottenere il metodo thumbnailImage di fornire me con qualcosa che può essere un oggetto dati appropriati per tornare dalla sorgente dati.

CGImageSourceCreateThumbnailAtIndex restituisce un CGImage. È necessario tableView_objectValueForTableColumn_row_ per restituire un NSImage. Pertanto, utilizzare il metodo di initWithCGImage_size_ NSImage.

Se si sta eseguendo Leopard, che il metodo non è disponibile, quindi è necessario creare un NSBitmapImageRep con il CGImage invece, e quindi creare un NSImage del formato corretto e aggiungere che la rappresentazione ad esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top