göstermez.
Hücre verilerini doldurmak için veri bağlamaları kullanmakta başarısız oldum, çünkü artık değerleri addItemsWithTitles ile programatik olarak ayarlayarak yeni bir yaklaşım deniyorum.
Bu yaklaşım değerleri yüklemek için çalıştıysa da, varsayılanı (dizilimin dizin 0'ı ile tamamlıyorum) seçili olarak göstermemekte ve aynı zamanda, açılır pencerede seçtiğim herhangi bir öğeyi görüntülemede başarısız olmaktadır.
Bağlantıları Sayı
dokümantasyon bağları kullanarak önermek ve açılır ilişkisel veri yüklemek için çekirdek veri kullanılarak bir örnek oluşturmaktadır. Uygulamam farklı şekilde ayarlanmış olsa da, yine de bir Array Denetleyicisini kullanmaya çalıştım ancak bu, popUpButtoncell'deki verileri doldurmayacaktı.
Veri yapığım basit bir sınıf nesnesi, çekirdek verisi yok ve buna benziyor.
class Display: NSObject {
var name: String
var resolution: String
var availableResolutions: [String]
}
Açılır alanı doldurmak için availableResolutions dizisini kullanmak isterim.
Tablomdaki her satır, Görüntüleme nesnesinin bir örneğini temsil eder. NSPopUpButtonCell öğesinin, söz konusu Görüntülü Reklamların mevcutResolutions listesindeki öğeleri görüntülemesini istiyorum. Her bir Görüntülü Reklam Ağı için dinamik bir listeye sahip olmanın mümkün olup olmadığından emin değilim. Ben
denedim ne
benim NSPopUpButtonCell için bir IBOutlet oluşturulan ve ben objectValueForTableColumn ve setObjectValue bunu başvuran ediyorum. ObjectValueForTableColumn öğesinin içindeki mevcutResultions dizisini ekliyorum.
@IBOutlet weak var popUpCell: NSPopUpButtonCell!
func numberOfRowsInTableView(tableView: NSTableView) -> Int {
return self.displays.count
}
func tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject? {
let display = displays[row]
if tableColumn!.identifier == "displayCell" {
return display.name
}
else if tableColumn!.identifier == "resolutionCell" {
return display.resolution
}
else {
self.popUpCell.addItemsWithTitles(display.availableResolutions!)
return display.availableResolutions
}
}
func tableView(tableView: NSTableView, setObjectValue object: AnyObject?, forTableColumn tableColumn: NSTableColumn?, row: Int) {
if tableColumn!.identifier == "displayCell" {
displays[row].name = object as! String
}
else if tableColumn!.identifier == "resolutionCell" {
object as! String
}
else {
let index = object as! Int
if index >= 0 {
self.popUpCell.selectItemAtIndex(index)
self.popUpCell.synchronizeTitleAndSelectedItem()
}
}
}
Neyi eksik?
objectValueForTableColumn ve setObjectValue öğesinin çağrıldığından emin misiniz? Bunlar hücre bazlı tablo görüntülemeleri için değil mi? Büyük olasılıkla görünüm tabanlı bir tablo görünümüne sahip olursunuz. – user965972
İçerik Modu Hücre Temeli için ayarlanmıştır. Diğer sütunlar için veri aslında doldurulur olarak objectValueForTableColumn çağrılır onaylayabilirsiniz.Ayrıca, setObjectValue çağrılır ve tablodaki herhangi bir veriyi değiştirirseniz çalışır. –