iOS 4.3 - 5.0

also ich ich habe die Methode zum errechnen der Differenz der Daten eingebaut nur bekomme ich leider im log immer wieder gesagt das es null tage sind
NSDate *date1 = dateMin;
NSDate *date2 = [NSDate date];

NSTimeInterval secondsBetween = [dateMin timeIntervalSinceDate:datePicker.date ];

int numberOfDays = secondsBetween / 86400;

NSLog(@"There are %d days in between the two dates.", numberOfDays);

2012-01-15 16:09:54.952 hello worl[1527:b303] There are 0 days in between the two dates.
 
Was ist denn dateMin und was hast Du im Datepicker ausgewählt?
 
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setMonth:01];
[dateComponents setYear:2012];
[dateComponents setDay:01];

da mein datepicker ja mit datemin und datemax begrenzt ist.
 
Ich sehe noch immer nicht, was Du in dateMin und dem Datepicker hast, wenn Du die beiden Daten vergleichst ;) Schau Dir das mal bitte an.
 
also ich habe einen datePicker :
datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 195, 320, 216)];
datePicker.datePickerMode = UIDatePickerModeDate;
datePicker.hidden = NO;
datePicker.minimumDate = dateMin;
datePicker.maximumDate = dateMax;


datePicker.date = [NSDate date];








[datePicker addTarget:self
action:mad:selector(LabelChange:)
forControlEvents:UIControlEventValueChanged];
[self.view addSubview:datePicker];

[datePicker release];

der durch ein Minimales Datum und ein maximales Datum begrenzt wird.
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setMonth:01];
[dateComponents setYear:2012];
[dateComponents setDay:01];
//etc...
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *dateMin = [calendar dateFromComponents:dateComponents];
[dateComponents release];


[dateComponents setMonth:12];
[dateComponents setYear:2012];
[dateComponents setDay:31];
//etc...
NSDate *dateMax = [calendar dateFromComponents:dateComponents];
//[dateComponents release];

da habe ich mir gedacht ich benutze als erste Datum das minimale Datum zu nehmen
NSDate *date1 = dateMin;

und als zweites Datum das Datum was aktuell im Datepicker ausgewählt ist
NSDate *date2 = [NSDate date];

und es dann berechnen lassen:
NSTimeInterval secondsBetween = [dateMin timeIntervalSinceDate:datePicker.date ];

int numberOfDays = secondsBetween / 86400;

NSLog(@"There are %d days in between the two dates.", numberOfDays);
 
Hänge mal bitte dein Projekt hier ran. Der Gedankengang ist richtig, aber irgendwie stimmt da was nicht.
 
Hier
 
Zuletzt bearbeitet von einem Moderator:
Ich brauche schon das ganze Verzeichnis inklusive Quellen, nicht nur die Projektdatei ;)
 
so jetzt aber
 
Hmm...

ich hab das eben selbst mal durchexerziert.

iPhone Projekt erzeugt (Simple View)
Datepicker angelegt
Textfield angelegt
Outlets für beides im Controller angelegt
folgenden Code zugefügt:
Code:
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    
    [dateComponents setMonth:01];
    [dateComponents setYear:2012];
    [dateComponents setDay:01];
    NSDate *dateMin = [calendar dateFromComponents:dateComponents];

    [dateComponents setMonth:12];
    [dateComponents setYear:2012];
    [dateComponents setDay:31];
    NSDate *dateMax = [calendar dateFromComponents:dateComponents];

    [theDatePicker setMinimumDate:dateMin];
    [theDatePicker setMaximumDate:dateMax];
    [theDatePicker setDate: [NSDate date]];
}

und
Code:
- (IBAction)myDatepickerChangedAction:(id)sender {
    NSTimeInterval secondsBetween = [[theDatePicker date]  timeIntervalSinceDate:[theDatePicker minimumDate]];
    int diff = secondsBetween / 86400;
    [theTextField setText: [NSString stringWithFormat:@"%d", diff]];
}

myDatepickerChangedAction mit changedValue vom DatePicker verbunden. Geht problemlos ;)
 
Dein Problem hab ich übrigens gefunden. Lies Dir mal bitte die Warnung durch, die Xcode in den Zeilen 88 und 89 im ViewController ausgibt. Du hast zwei dateMin und dateMax, einmal den lokalen in viewDidLoad und einmal den des Objekts. Du vergleichst jetzt in LabelChange aber das unmodifizierte dateMin der Klasse. Das ist aber nicht initialisiert. Damit schlägt jede Berechnung fehl.
 
danke danke :) habs jetzt auch gefunden ;) so und wie meintest du das mit dem modulo errechnen also ich finde in der Doku nichts dazu
 
Ok, Du erinnerst Dich vielleicht noch an die Division von ganzen Zahlen mit Rest. Modulo tut genau das.

11 durch 4 ist 2 mit dem Rest 3. Modulo gibt dir die 3 zurück. Du hast die Tage seit Deinem Start, die Du vierteilen willst. Der Modulo-Operator wird dir also für jeden Tag wiederkehrend den Rest der Division durch 4 geben. Das kann 0, 1, 2 oder 3 sein. Mit diesen vier Werten kannst Du das Ergebnis des Modulo Deinen 4 Bildern zuordnen.

http://stackoverflow.com/questions/1271102/how-to-make-a-modulo-operation-in-objective-c-cocoa-touch

PS. Google hilft ("Objective C Modulo")
 
es tut mir Eid das ich euch nochmal stören muss aber ich habe das jetzt wie folgt mal probiert:
#import "ViewController.h"

@implementation ViewController
@synthesize theTextField;
@synthesize imageNumber;

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
[super viewDidLoad];

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];

[dateComponents setMonth:01];
[dateComponents setYear:2012];
[dateComponents setDay:01];
NSDate *dateMin = [calendar dateFromComponents:dateComponents];

[dateComponents setMonth:12];
[dateComponents setYear:2012];
[dateComponents setDay:31];
NSDate *dateMax = [calendar dateFromComponents:dateComponents];

[theDatePicker setMinimumDate:dateMin];
[theDatePicker setMaximumDate:dateMax];
[theDatePicker setDate: [NSDate date]];
}
- (IBAction)myDatepickerChangedAction:(id)sender {
NSTimeInterval secondsBetween = [[theDatePicker date] timeIntervalSinceDate:[theDatePicker minimumDate]];
int diff = secondsBetween / 86400;
[theTextField setText: [NSString stringWithFormat:mad:"%d", diff]];

NSString *theTextField = @"";
int daysPassed = [theTextField floatValue];


int imageNumber = daysPassed % 4;


if (imageNumber == 0)
Trommel1.hidden =NO;
Trommel2.hidden =YES;
Trommel3.hidden =YES;
Trommel4.hidden =YES;

if (imageNumber == 1)
Trommel1.hidden =YES;
Trommel2.hidden =NO;
Trommel3.hidden =YES;
Trommel4.hidden =YES;

if (imageNumber == 2)
Trommel1.hidden =YES;
Trommel2.hidden =YES;
Trommel3.hidden =NO;
Trommel4.hidden =YES;

if (imageNumber == 3)
Trommel1.hidden =YES;
Trommel2.hidden =YES;
Trommel3.hidden =YES;
Trommel4.hidden =NO;



}

doch als Ergebnis wird mir immer nur Bild 4 präsentiert ... also müsste imageNumber Immer = 3 sein laut dem Programm :/
wisst ihr wo da mein Fehler liegt?
 
setze mal noch ein paar klammern ;)

nicht:
Code:
if (imageNumber == 3)
  Trommel1.hidden =YES;
  Trommel2.hidden =YES;
  Trommel3.hidden =YES; 
  Trommel4.hidden =NO;

sondern
Code:
if (imageNumber == 3) {
  Trommel1.hidden =YES;
  Trommel2.hidden =YES;
  Trommel3.hidden =YES; 
  Trommel4.hidden =NO;
}

und das bei jedem if...
 
sry war doppel post ja werde ich tuen :/ warum ist mir das nicht aufgefallen o_O danke
 
hm mist ja jetzt zeigt er mir wenigsten 1 mal den richtigen tag an und macht dann nichts mehr also er berechnet noch das sehe ich und das aktualisiert sich auch aber das Bild bzw das if Statement schein nicht mehr zu greifen ...

*edit* er zeigt mir immer an das erste Bild also geht er davon aus das imageNumber immer = 0 ist
 
ich kann dir das nicht immer fremd-debuggen und raten, was falsch läuft. lerne mal mit dem debugger umzugehen. doku im netz und bei apple...
 
trotzdem danke :)
 
Zurück
Oben Unten