Ich bin ein C++ Programmierer neu in Objective-c.Klassenmethode (NSString-Typ), die von viewcontroller aufgerufen wird, gibt nil?
Ich habe eine Taschenrechner-App erstellt, die mit einer einzigen Ansicht funktioniert. Ich habe eine Berechnungsklasse und einen ViewController. Jedes Mal, wenn eine Schaltfläche gedrückt wird, ruft eine IBAction-Methode in ViewController Methoden auf, die in der Calculations-Klasse definiert sind, um die Eingabe zu verarbeiten, und gibt die Ausgabe als NSString zurück, die ich dann als Wert für das label.text-Feld festlege.
Jetzt arbeite ich an einer Tab Bar App mit der gleichen Berechnungsklasse. Diese App verfügt über zwei Registerkarten, die jeweils über einen eigenen Satz von Eingabetasten für den Taschenrechner verfügen (beide Ansichten teilen dieselben Eingabe-/Ausgabedaten). Die erste Registerkarte ist identisch mit meiner ersten App mit der Einzelansicht, also versuche ich dies auf ähnliche Weise zu tun. Hier
ist das Problem:
Wenn eine Taste gedrückt wird, wird die IBAction Methode, die die Eingangshandgriffe durchläuft die Anrufe zu den Berechnungen Klassenmethoden (siehe unten), ohne Fehler:
-(IBAction)readInput:(id)sender {
[_calculations input:[sender titleForState:UIControlStateNormal]];
inputField.text = [_calculations inputDisplay];
outputField.text = [_calculations outputDisplay];
}
jedoch Die Methoden inputDisplay und outputDisplay geben nil zurück. Mit dem Debugger habe ich bemerkt, dass ich nicht in der Lage bin, die Aufrufe von _calculations-Methoden zu "betreten", stattdessen wird die Zeile übersprungen und der von beiden zurückgegebene Wert ist null. Ich habe die folgende Methode hinzugefügt:
und wenn ich dies an die Eingabe-Tasten anschließe, kann ich die Anzeige aktualisiert sehen. Dies scheint ein Problem beim Aufrufen der _calculations-Elementfunktionen und der Tab-Bar-Ansichten zu sein (da dieses Problem bei Verwendung einer einzelnen Ansicht nicht vorhanden ist).
Ich weiß, dass ich eine Menge Informationen weggelassen habe, aber ich habe es getan, um irrelevante Informationen zu vermeiden. Ich werde alle Details zur Verfügung stellen, die notwendig sind, wenn Sie gefragt werden.
Hinweis: Sie können [Formatzeilen als code] (http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) durch Einrücken sie vier Räume. Die Schaltfläche "{}" in der Editor-Symbolleiste erledigt dies für Sie. Bearbeiten Sie Ihre Frage und probieren Sie es aus. Klicken Sie auf das orangefarbene Fragezeichen in der Editor-Symbolleiste, um weitere Informationen und Tipps zum Formatieren zu erhalten. – outis
Der Beispielcode ist tatsächlich [unvollständig] (http://sscce.org/). Wie wird '_calculations' festgelegt? Ist es Null?Was sind die Methoden "inputDisplay" und "outputDisplay"? Wenn sie Eigenschaften von 'Calculation' sind, wie werden sie gesetzt? Was sind die Bindungen in IB? – outis