• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Kleines Problem in Objective-C

jako3xb2

Fuji
Registriert
26.08.08
Beiträge
38
Hi,

Ich bin Anfänger in Objective-C. Mein Problem ist, wenn ich den Code da unten ausführe stützt das App ab und ich weiß nicht warum!? Mein Code ist:

Code:
[progress setProgress:[slider floatValue]];

"progress" entspricht einer processbar und
"slider" eines sliders
 
Code:
progress.progress=slider.value;

Du musst aber die min and max Werte des Sliders zwischen 0 und 1 setzen.
 
Danke, erstmal!
Ist das Objective-C ?(Der Syntax sieht komisch aus)
 
dot Syntax.

Du kannst natürlich auch

Code:
[progress setProgress:slider.value];

benutzen.
 
Funktioniert dann:

Code:
[progress setProgress:[slider value]];

(Kann ich jetzt nicht testen, erst abends)
 
kanns jetzt ausprobieren. Aber es funktioniert nicht. Ich bekomme immer :

Code:
 error: incompatible type for argument 1 of 'setProgress:'
 
Hast du evtl. dein "Slider Object" falsch im "Header File" deklariert ?
 
Hier die Header:

Code:
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@interface MAFoo : UIView {
    IBOutlet id progress;
    IBOutlet id slider;
}
- (IBAction)in2:(id)sender;
@end
 
Code:
IBOutlet UIProgressView *progress;
IBOutlet UISlider *slider;

Genau so wie dein erster Hinweis:
Code:
progress.progress=slider.value;

Hilfst Du jako3xb2 damit keine Strich weiter, denn beide Codeteile die er hier gepostet hat waren syntaktisch richtig!

@@jako3xb2 hast Du im InterfaceBuilder auch die jeweiligen Controls verbunden?

Mach doch mal bevor
Code:
[progress setProgress:[slider floatValue]];

ein

Code:
NSLog(@"%@",[slider description]);
 
Ok, dann kommt:

Code:
<UISlider: 0xd2b040; frame = (18 118; 284 23); clipsToBounds = YES; opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xd2b290>>
 
Dann als nächstes:

Code:
NSLog(@"processbar: %@\nslider: %@\nfloatValue: %f",[progress description], [slider description],[slider value]);
 
Ok, dann kommt:

Code:
processbar: <UIProgressView: 0xd2ad50; frame = (20 94; 280 9); clipsToBounds = YES; opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xd1b660>>
slider: <UISlider: 0xd2b040; frame = (18 118; 284 23); clipsToBounds = YES; opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xd2b290>>
floatValue: 0.565134
 
Ich glaube ich weiß was mein Problem war. Ich habe vergessen beim Outlet einen Type einzugeben und habe "id" gelassen!
 
Ok, dann kommt:

Code:
processbar: <UIProgressView: 0xd2ad50; frame = (20 94; 280 9); clipsToBounds = YES; opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xd1b660>>
slider: <UISlider: 0xd2b040; frame = (18 118; 284 23); clipsToBounds = YES; opaque = NO; autoresize = RM+BM; layer = <CALayer: 0xd2b290>>
floatValue: 0.565134

Komisch

Ich glaube ich weiß was mein Problem war. Ich habe vergessen beim Outlet einen Type einzugeben und habe "id" gelassen!

Nein, id ist eigentlich schon ok.

Hast Du skype?