Frage

Ich weiß, dass dies wahrscheinlich eine einfache Frage, aber hier ist, was ich zerbreche mir Gehirn diese, um herauszufinden:

Ich weiß, dass dies:

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index {
return [midiModelContents objectAtIndex:index];

}

kehrt das Element am Index zur Verfügung gestellt. Meine Frage ist, welcher Code muss ich diese Routine aufrufen benutzen?

Ich habe so etwas wie dies versucht:

NSString *curData =(comboBox: midiModel objectValueForItemAtIndex:0);

, aber ich einen "Fehler: 'comboBox' nicht angemeldete" get

Kann mir jemand helfen mit dem Konzept, dass ich vermassele?

War es hilfreich?

Lösung

Als erstes möchten Sie vielleicht die lesen Objective-C-Programmiersprache die korrekte Syntax zu lernen, um Nachrichten an Objekte zu senden, einschließlich sich selbst.

Sie eine Nonsense-Fehlermeldung erhalten, weil Sie geschrieben haben (was in Objective-C ist) Unsinn Code. Ein gültiger Objective-C Nachrichtenausdruck würde kompilieren und erfolgreich laufen, aber ich glaube nicht, es tun würde, was Sie erwarten es.

Sie sehen (und das ist die zweite Sache), ist comboBox:objectValueForItemAtIndex: normalerweise nicht eine Nachricht, die Sie an sich selbst senden. Das Kombinationsfeld sendet diese Nachricht an Sie, wenn Sie die Datenquelle sind. Datenquellen sind eine Variation der Delegierten Muster, das unter den Dingen, ist im Detail beschrieben in die Cocoa Fundamentals Führer .

(Sie können Bitte senden Sie die Nachricht an sich selbst, und es kann sogar sinnvoll, dies zu tun, wenn Sie absichtlich durch das gleiche Objekt-Wert-Retrieval Weg gehen wollen, dass die Combo-Box tut, aber das ist nicht das, was man ein Kombinationsfeld funktioniert.)

tun müssen

Sowohl die Sprache Dokument und die Cocoa Fundamentals Dokument sind eine wichtige Lektüre für jeden Cocoa-Programmierer, zusammen mit die Speicherverwaltung für Cocoa . Sie sollten alle drei Dokumente von Anfang bis Ende lesen.

Die Lösung für Ihr unmittelbares Problem ist für das Objekt, das antwortet die Datenquelle des Kombinationsfelds sein comboBox:objectValueForItemAtIndex:. Sie werden wahrscheinlich in der gleichen Feder in IB, diese hook up, wo Sie das Kombinationsfeld erstellt.

Wenn keiner das macht keinen Sinn, dann kann ich nur vorschlagen, für Sie, wieder, diese Dokumente zu lesen. Sie werden alles erklären.

Wenn Sie meinen, haben einfach wirklich selbst für den Objektwert zu bitten, die gleiche Art und Weise das Kombinationsfeld ist (dh Sie das Kombinationsfeld haben arbeiten bereits und beabsichtigen, den Objektwert die gleiche Art und Weise für einen anderen Zweck zu bekommen), dann Sie müssen noch die Objective-C-Programmiersprache Dokument lesen die richtige Syntax zu lernen, sich selbst die Nachricht zu senden.

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