NOOB Problèmes avec l'obtention de résultats à partir du code (plus specificly avec NSComboBox)

StackOverflow https://stackoverflow.com/questions/4038290

  •  27-09-2019
  •  | 
  •  

Question

Je sais que cela est probablement une question simple, mais voici ce que je suis racking mon cerveau pour comprendre cela:

Je sais que ceci:

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

}

renvoie l'élément à l'index fourni. Ma question est, quel code dois-je utiliser pour appeler cette routine?

Je l'ai essayé quelque chose comme ceci:

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

mais je reçois une "erreur: non déclarées 'comboBox'"

aide quelqu'un peut me le concept que je suis chambouler?

Était-ce utile?

La solution

D'abord, vous pouvez lire la objective-C langage de programmation pour apprendre la syntaxe correcte pour envoyer des messages à des objets, y compris vous.

Vous obtenez un message d'erreur non-sens parce que vous avez écrit (ce qui est en Objective-C) Code non-sens. Une expression valide de message Objective-C serait compiler et exécuter avec succès, mais je ne pense pas que ce serait faire ce que vous vous attendez à.

Vous voyez (ce qui est la deuxième chose), comboBox:objectValueForItemAtIndex: est pas habituellement un message que vous envoyez à vous. La zone de liste déroulante envoie ce message à vous lorsque vous êtes la source de données. Les sources de données sont une variation sur le modèle de délégué qui est parmi les choses décrites en détail dans Cocoa Fundamentals Guide.

(Vous peut envoyer le message à vous-même, et il peut même logique de le faire si vous voulez délibérément passer par le même chemin de récupération de la valeur-objet de la zone de liste déroulante fait, mais ce est pas ce que vous devez faire pour faire un travail de zone de liste déroulante.)

Tant le document de la langue et le document Principes de base de cacao sont une lecture essentielle pour tous les programmeurs Cocoa, avec le Guide de gestion mémoire Cocoa. Vous devriez lire les trois documents du début à la fin.

La solution à votre problème immédiat est l'objet qui répond à comboBox:objectValueForItemAtIndex: être la source de données de la zone de liste déroulante. Vous aurez probablement accrocher ce dans IB, dans le même nib où vous avez créé la zone de liste déroulante.

Si rien de tout cela n'a aucun sens, alors tout ce que je garde à votre disposition est, encore une fois, de lire ces documents. Ils tout expliquer.

Si vous avez vraiment dire simplement vous demander la valeur de l'objet de la même manière la zone de liste déroulante ne (par exemple, vous avez la zone de liste déroulante qui travaillent déjà et ont l'intention d'obtenir la valeur d'objet de la même manière à d'autres fins), puis vous avez encore besoin de lire l'Objective-C Document de programmation Langue pour apprendre la syntaxe correcte pour vous envoyer ce message.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top