• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Problem mit Xcode

robertmini

Fuji
Registriert
01.10.09
Beiträge
37
Code:
#import "KreisumfangController.h"

@implementation KreisumfangController
- (IBAction)pushStart:(id)sender {
	double radius = [Radius doubleValue];
	double durchmesser = radius * 2;
	double umfang = durchmesser * pi;
	
	[Ergebnis setDoubleValue:umfang];
    
}
@end

Also, ich glaub ihr versteht alle, was ich da versuche zu machen, jedoch kriege ich als Ergebnis immer 0. Auch wenn ich mit 3 statt π rechne....Da ich jedoch erst letzte Woche mit Xcode angefangen habe ist dieser Fehler wahrscheinlich ziemlich banal...aber vielleicht hilft mir ja jemand. :)

Und dann habe ich noch eine Frage: Ich habe im Interface-Builder 3 Fenster, beim Start soll sich jedoch nur eines davon öffnen, die anderen sollen dann über actions aufgerufen werden. Wie geht das?

Danke schonmal
Robert

EDIT: Radius und Ergebnis sind meine outlets
 
Zuletzt bearbeitet:

robertmini

Fuji
Registriert
01.10.09
Beiträge
37
Ups, ich war vorschnell, Problem 1 hat sich erledigt! Aber wie siehts mit den Fenstern aus?
 

NSObject

Braeburn
Registriert
24.04.09
Beiträge
44
hi,

bei den Fenstern, die nicht von Anfang an zu sehen sein sollen, machst du im Interface Builder einfach das Häkchen 'Visible at Launch' weg.

Dann kannst du sie entweder direkt im InterfaceBuilder mit Buttons zum ein-/ausblenden verbandeln: Verbindung vom Button zum Fenster ziehen und aus dem Menü 'makeKeyAndOrderFront:' zum ein- bzw. 'orderOut:' zum ausblenden wählen.
Oder du kannst das auch im Code machen - du musst die Fenster dazu natürlich auch als IBOutlets anlegen - die Methoden zum Ein- und Ausblenden heissen genauso (z.B.
Code:
[myWindow makeKeyAndOrderFront:nil];
)

Grüße

NSObject
 

bennibrother1

Zuccalmaglios Renette
Registriert
24.09.08
Beiträge
259
Das selbe kann man übrigens auch mit einem WindowsController (oder so ähnlich) machen.
 

robertmini

Fuji
Registriert
01.10.09
Beiträge
37
danke euch allen:) so einigermaßen funktioniert mein programm jetzt schon. weiß jemand noch zufällig, wie man double zahlen in die zwischenablage kopiert? hab in der documentation nichts gefunden, aber wahrscheinlich such ich wieder am falschen ende ;)
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Such in der Doku: 'Pasteboard', dann klickst du 'Pasteboard Programming Guide' an... voilà

Ich kann dir schon im Voraus sagen, dass du einen double nicht ins pasteboard bringen wirst. Jedoch sehr wohl ein NSNumber mit double-Inhalt. Diesen Umweg musst du machen, wenn du mit Cocoa und der Zwischenablage arbeiten willst.

Gruss ppocket
 

robertmini

Fuji
Registriert
01.10.09
Beiträge
37
danke, ich hab das jetzt einfach mit NSString gemacht, in der Zwischenablage wird ja sowieso nicht zwischen Text und Zahlen unterschieden. Oder hat das irgendwelche Nachteile?
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
danke, ich hab das jetzt einfach mit NSString gemacht, in der Zwischenablage wird ja sowieso nicht zwischen Text und Zahlen unterschieden. […]

Das ist leider falsch. Du setzt ja (jetzt auf neue Weise unter 10.6) jedem Pasteboard-Objekt einen bestimmten Typ (String, PDF, Image, Color, …) und darum solltest du auch nur genau entsprechende Objekte darin einfügen. Sonst wirst du in Konflikt mit anderen Applikationen geraten, denn das Pasteboard ist ja global.

consider your choice. Gruss ppocket
 

robertmini

Fuji
Registriert
01.10.09
Beiträge
37
Ich hab noch kein Snow-Leo...und es klappt. Heißt das, unter Snow-Leo funktioniert es nicht? Was muss ich denn ändern?

Code:
	NSString* ergebnis = [Ergebnis stringValue];
	NSPasteboard *pboard = [NSPasteboard generalPasteboard];
	[pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self];
	[pboard setString:ergebnis forType:NSStringPboardType];
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Du musst nichts ändern. Es gibt sozusagen nur unter SL eine neue, übersichtlichere Möglichkeit, das Pasteboard zu benutzen. Das alte System wird aber weiter unterstützt.

Gruss ppoket
 

robertmini

Fuji
Registriert
01.10.09
Beiträge
37
dankeschön :)

zu dieser neuen möglichkeit: funktioniert mein programm auch noch unter 10.5, wenn ich die benutze, muss ich dann nen switch oder so einbauen?

Code:
	double grundseite = [Schenkela doubleValue];
	double schenkel = [Schenkelb doubleValue];
	double hohe = [Schenkelh doubleValue];
	double umfang;
	double flache;
	if (schenkel = 0) {
		umfang = grundseite + sqrt(grundseite * grundseite / 4 + hohe * hohe) * 2;
		flache = grundseite * hohe / 2;
	}
	else {
		umfang = schenkel * 2 + grundseite;
		flache = sqrt(schenkel * schenkel - grundseite * grundseite / 4) * grundseite / 2;
		
	}


	[SchenkelA setDoubleValue:flache];
	[SchenkelU setDoubleValue:umfang];

ich weiß nicht warum, aber ich kriege hier "nan" als ergebnis für die Fläche (flache). liegt das daran, dass ich bei der if-funktion als bool nicht double = zahl setzten darf?