2009-08-21 11 views
1

Ich bin sicher, das ist etwas einfaches, aber ich habe es für ein bisschen jetzt anstarren und ich denke, alles was ich brauche, ist ein frisches Paar Augen, um es zu betrachten, und da meine Katze doesn Ich habe eine Menge Erfahrung mit iPhone Programmierung, die ich an Sie gerichtet habe.Parameter verloren Wert, wenn bestanden

ich aus einer Klasse (UIView) in eine andere Klasse (UIViewController) rechts eine Variable vom Typ float am geben, bevor die Variable übergeben wird Wert ist richtig, aber wenn es die Funktion erreicht er es an Wert verliert, wird es gezeigt 0 zu sein oder -2 und ich bin mir nicht sicher warum. Wie ich schon sagte, ich bin sicher, es ist etwas einfach, aber ich brauche nur ein frisches Paar Augen ist es

-Code suchen unter

//inside UIView 
-(void)UpdateFloat 
{ 
myFloat = myFloat + 0.01; 
} 



    -(void)RemoveView 
{ 
//Function Call 
[viewController myFunction:myFloat]; 
} 

//Function 
-(void)myFunction:(float)myFloat 
{ 
[myView removeFromSuperview]; 
[self.view addSubview:myOtherView]; 
[myOtherView anotherFunction:myFloat]; 

}

der Schwimmer durch einen Zeitgeber aktualisiert wird und wenn der UIView der Wert des Schwimmers den Funktionsaufruf macht korrekt ist (in der Regel etwa 15,67)

jede Hilfe

Vielen Dank im Voraus geschätzt würde , BWC

+0

Ich hoffe, dass Sie Ihre Katze nicht beleidigen! –

+0

zeige den Aufruf von myFuction (der Code um es herum und wie Sie den Float zuweisen) – Daniel

Antwort

1

Wenn Ihr Float wirklich ein Float ist, ich wette, da ist noch etwas anderes passiert, das diesen Wert manipuliert, es ist nicht die Nachricht senden. Suche nach jedem Vorkommen dieses Variablennamens.

Sie werden sehen, dass solche Sachen passieren, wenn Sie aus Versehen Integer-Mathe auf Floats machen (was wirklich einfach ist). Überprüfen Sie und stellen Sie sicher, dass Ihre Floats Floats sind und die ganze Mathematik in Floats durchgeführt wird und keine Int Mathematik geschieht.

Es ist auch möglich, dass es ein Bereich bezogene Sache ist und Sie stattdessen eine andere myFloat bekommen, schwer zu sagen, ohne die gesamte verfügbare Quelle.

+0

Ich habe die Import-Anweisung verfehlt, die dazu führte, dass die Signatur meiner Methode nicht gefunden wurde, so dass die übergebene Variable ihren Wert verlor ... Ich habe alles aufgepasst von, danke für deine Hilfe – BWC

+0

diese Art von Sinn macht, würde es wahrscheinlich als ein (id) statt einer (float) behandelt werden verursacht alle möglichen seltsamen Dinge passieren, weil Float ist keine Klasse. – slf

0

Nun, ich verstehe Sie nicht, weil Sie sagen, Sie gehen von UIView zu UIViewController. Aber in Ihrem Code rufen Sie zuerst eine Funktion im UIViewController auf, die übrigens [self myFunction: myFloat] sein muss, und in dieser Funktion rufen Sie Ihre UIView auf.

+0

Nein die erste Zeile des Codes ist in meiner UIView, rufe ich auf eine Funktion in der ViewController, die der ViewController dann eine Ansicht entfernt und Hinzufügen einer anderen Ansicht und dann Aufrufen einer Funktion in der zweiten Ansicht und Übergeben der Float, die es von der ersten Ansicht gegeben wurde. aber schon bevor es diesen Aufruf ausführt, hat der Float seinen Wert verloren – BWC

0

Ok Jungs,

Ich glaube, ich habe herausgefunden, warum der Schwimmer nicht wird halten es Wert ist, aber der Grund, warum ich auch Schikanen.

, wenn ich die Viewcontrollers Funktion in dem UIView Xcode Aufruf wird die Warnung zeigt, dass es keine Methode gibt, und dass Verfahren ohne eine passende Signatur wird annehmen zurückzukehren (id) und übergibt ‚...‘ als Argument

ich verstehe diese Warnung bedeutet, was aber was ich nicht verstehe, ist, dass ich die Methode im Header meiner Viewcontroller

-(void)myFunction:(float)myFloat; 

erklärt habe ich auch eine andere Ansicht haben, die Funktionen für den view-Controller ruft und es ist nicht Diese Warnung wird angezeigt ... Ich bin mir ziemlich sicher, dass dies der Grund ist, warum der Float seinen Wert nicht behält, Ich weiß, warum es die Signatur der Methode nicht sehen kann

+0

Ich habe es herausgefunden, Leute, ich habe meine Importaussage vermisst ... ich wusste, dass es etwas Einfaches sein würde – BWC

Verwandte Themen