iOS 4.3 - 5.0

D

Deltaassissino

Mitglied
Thread Starter
Dabei seit
21.10.2011
Beiträge
35
Reaktionspunkte
0
hallo :) ich habe ein frage bezüglich der Datums Ausgabe des Datepickers in iOS 5.0
bis her war dies wie folgt 01.01.2012 (iOS 4.3) nun aber mit iOS 5 ist es
Jan 1, 2012 mein alter code ehemalig für iOS 4.3 sieht daher so aus :
- (void)viewDidLoad
{
[super viewDidLoad];


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];



datelabel = [[UILabel alloc] init];
datelabel.frame = CGRectMake(33, 94, 176, 21);
datelabel.backgroundColor = [UIColor clearColor];
datelabel.textColor = [UIColor blackColor];
datelabel.font = [UIFont fontWithName:mad:"Helvetica-Bold" size: 20.0];
datelabel.textAlignment = UITextAlignmentCenter;


NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateStyle = NSDateFormatterMediumStyle;
datelabel.text = [NSString stringWithFormat:mad:"%@",
[df stringFromDate:[NSDate date]]];

[df release];
[self.view addSubview:datelabel];
[datelabel release];



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];






}

- (void)LabelChange:(id)sender{
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateStyle = NSDateFormatterMediumStyle;
datelabel.text = [NSString stringWithFormat:mad:"%@",
[df stringFromDate:datePicker.date]];



if ([datelabel.text isEqualToString:mad:"Jan 4,2012"]||[datelabel.text isEqualToString:mad:"Jan 7,2012"]||[datelabel.text isEqualToString:mad:"Jan 11,2012"]||[datelabel.text isEqualToString:mad:"Jan 15, 2012"]||[datelabel.text isEqualToString:mad:"Jan 19, 2012"]||[datelabel.text isEqualToString:mad:"Jan 23, 2012"]||[datelabel.text isEqualToString:mad:"Jan 27, 2012"]||[datelabel.text isEqualToString:mad:"Jan 31, 2012"]
||[datelabel.text isEqualToString:mad:"04.02.2012"]||[datelabel.text isEqualToString:mad:"08.02.2012"]||[datelabel.text isEqualToString:mad:"12.02.2012"]||[datelabel.text isEqualToString:mad:"16.02.2012"]||[datelabel.text isEqualToString:mad:"20.02.2012"]||[datelabel.text isEqualToString:mad:"24.02.2012"]||[datelabel.text isEqualToString:mad:"28.02.2012"]
||[datelabel.text isEqualToString:mad:"03.03.2012"]||[datelabel.text isEqualToString:mad:"07.03.2012"]||[datelabel.text isEqualToString:mad:"11.03.2012"]||[datelabel.text isEqualToString:mad:"15.03.2012"]||[datelabel.text isEqualToString:mad:"19.03.2012"]||[datelabel.text isEqualToString:mad:"23.03.2012"]||[datelabel.text isEqualToString:mad:"27.03.2012"]||[datelabel.text isEqualToString:mad:"31.03.2012"]||[datelabel.text isEqualToString:mad:"04.04.2012"]||[datelabel.text isEqualToString:mad:"08.04.2012"]||[datelabel.text isEqualToString:mad:"12.04.2012"]||[datelabel.text isEqualToString:mad:"04.04.2012"]||[datelabel.text isEqualToString:mad:"16.04.2012"]||[datelabel.text isEqualToString:mad:"20.04.2012"]||[datelabel.text isEqualToString:mad:"24.04.2012"]||[datelabel.text isEqualToString:mad:"28.04.2012"]||[datelabel.text isEqualToString:mad:"02.05.2012"]||[datelabel.text isEqualToString:mad:"06.05.2012"]||[datelabel.text isEqualToString:mad:"10.05.2012"]||[datelabel.text isEqualToString:mad:"14.05.2012"]||[datelabel.text isEqualToString:mad:"18.05.2012"]||[datelabel.text isEqualToString:mad:"22.05.2012"]||[datelabel.text isEqualToString:mad:"26.05.2012"]||[datelabel.text isEqualToString:mad:"30.05.2012"]||[datelabel.text isEqualToString:mad:"03.06.2012"]||[datelabel.text isEqualToString:mad:"07.06.2012"]||[datelabel.text isEqualToString:mad:"11.06.2012"]||[datelabel.text isEqualToString:mad:"15.06.2012"]||[datelabel.text isEqualToString:mad:"19.06.2012"]||[datelabel.text isEqualToString:mad:"23.06.2012"]||[datelabel.text isEqualToString:mad:"27.06.2012"]||[datelabel.text isEqualToString:mad:"03.06.2012"]||[datelabel.text isEqualToString:mad:"01.07.2012"]||[datelabel.text isEqualToString:mad:"05.07.2012"]||[datelabel.text isEqualToString:mad:"09.07.2012"]||[datelabel.text isEqualToString:mad:"13.07.2012"]||[datelabel.text isEqualToString:mad:"17.07.2012"]||[datelabel.text isEqualToString:mad:"21.07.2012"]||[datelabel.text isEqualToString:mad:"25.07.2012"]||[datelabel.text isEqualToString:mad:"29.07.2012"]||[datelabel.text isEqualToString:mad:"02.08.2012"]||[datelabel.text isEqualToString:mad:"06.08.2012"]||[datelabel.text isEqualToString:mad:"10.08.2012"]||[datelabel.text isEqualToString:mad:"14.08.2012"]||[datelabel.text isEqualToString:mad:"18.08.2012"]||[datelabel.text isEqualToString:mad:"22.08.2012"]||[datelabel.text isEqualToString:mad:"26.08.2012"]||[datelabel.text isEqualToString:mad:"30.08.2012"]||[datelabel.text isEqualToString:mad:"03.09.2012"]||[datelabel.text isEqualToString:mad:"07.09.2012"]||[datelabel.text isEqualToString:mad:"11.09.2012"]||[datelabel.text isEqualToString:mad:"15.09.2012"]||[datelabel.text isEqualToString:mad:"19.09.2012"]||[datelabel.text isEqualToString:mad:"23.09.2012"]||[datelabel.text isEqualToString:mad:"27.09.2012"]||[datelabel.text isEqualToString:mad:"29.09.2012"]||[datelabel.text isEqualToString:mad:"01.10.2012"]||[datelabel.text isEqualToString:mad:"05.10.2012"]||[datelabel.text isEqualToString:mad:"09.10.2012"]||[datelabel.text isEqualToString:mad:"13.10.2012"]||[datelabel.text isEqualToString:mad:"17.10.2012"]||[datelabel.text isEqualToString:mad:"21.10.2012"]||[datelabel.text isEqualToString:mad:"25.10.2012"]||[datelabel.text isEqualToString:mad:"29.10.2012"]||[datelabel.text isEqualToString:mad:"02.11.2012"]||[datelabel.text isEqualToString:mad:"06.11.2012"]||[datelabel.text isEqualToString:mad:"10.11.2012"]||[datelabel.text isEqualToString:mad:"14.11.2012"]||[datelabel.text isEqualToString:mad:"18.11.2012"]||[datelabel.text isEqualToString:mad:"22.11.2012"]||[datelabel.text isEqualToString:mad:"26.11.2012"]||[datelabel.text isEqualToString:mad:"30.11.2012"]||[datelabel.text isEqualToString:mad:"04.12.2012"]||[datelabel.text isEqualToString:mad:"08.12.2012"]||[datelabel.text isEqualToString:mad:"12.12.2012"]||[datelabel.text isEqualToString:mad:"16.12.2012"]||[datelabel.text isEqualToString:mad:"20.12.2012"]||[datelabel.text isEqualToString:mad:"24.12.2012"]||[datelabel.text isEqualToString:mad:"28.12.2012"] ){
ich würde aber gerne alleine wegen dem storyboard den code iso 5.0 cmopaktibel machen muss ich wirklich jedes datum ändern ?
 
Ne, denn du solltest dich vorher mal mit den Datumsfunktionen beschäftigen ;).
 
wie meinst du das genau ?
 
OMG!

Was willst Du da eigentlich *genau* machen?
 
XD ja also ganz einfach ich habe nen datepicker das dort ausgewählte Datum wird in einem Label angezeigt dann mit dem if clause verglichen und dem entsprechen wird ein Bild hinter dem Label angezeigt.
 
Das meinte ich nicht. Wieso vergleichst Du das mit dieser langen Liste? Was macht Dein Programm im Jahr 2013? ;)
 
aso XD das ist limitiert auf 2012 :) und ich habe halt 4 Kategorien für 4 unterschiedliche Bilder und keinen besseren weg gefunden das zu machen
 
Und was sind das für Kategorien? Welche Anforderungen stellst Du an das Datum das Du da untersuchst, um es einem bestimmten Bild zuzuordnen?

Ich meine soetwas wie: Jeden ersten Montag im Monat zeige Bild A, jeden dritten Freitag zeige Bild B... oder so..
 
ja so ähnlich also das ist ein 4 tage Rhythmus und jeder der 4 tage hat ein unterschiedliches Bild 1.01. Bild 1 02.01. Bild 2 usw
 
Der simpelste Weg ist (mit einem kleinen "Tradeoff"[*]), dass Du Dir den Tag des Jahres berechnest:
http://stackoverflow.com/questions/...f-the-year-for-a-specific-date-in-objective-c

Und dann den Wert mit dem Modulo-Operator zur 4 verrechnest. Das Ergebnis ordnest Du dann den Bildern zu. Vorteil: Das funktioniert auch noch 2013 und der Code ist viel kürzer. [*]Nachteil: Zum Jahreswechsel wirst Du ein mal nicht alle Bilder sehen.

Geht bestimmt auch eleganter und schicker, ist aber eine Möglichkeit.
 
Das hört sich gut an also wenn ich das richtig verstehe Rechner der dann jedes Datum hoch und hat immer bei Datum 4 das gleiche Ergebniss so das der Code ins unendliche läuft ? Das hört sich sehr gut an was meinst du mit dem Jahres Wechsel ?
 
Mein Ansatz rechnet nicht das Datum hoch sondern stellt den Tag des Jahres fest, hat also einen Maximalwert 365 oder (wie in diesem Jahr 366 -> Schaltjahr). Der Modulo-Operator gibt Dir den Rest bei der Division durch eine Zahl zurück. 10%4 ist zB 2. 365%4 ist 1. Und genau da besteht das Problem. Am Anfang des neuen Jahres wirst Du springen: 365%4 = 1; 1%4 = 1. das erste Bild wird also über Silvester zwei mal angezeigt. Im Schaltjahr wird es hüpfen: 366%4=2 -> Die Folge ist dann 1..2..1.

Sicherlich kann man auch von einem bestimmten Datum immer hochrechnen lassen, ob man am 4. Tag der Folge ist. Dann rechnet er auch immer richtig. Nur steigt mit jedem Tag der Rechenaufwand linear an. Man kann natürlich auch hier optimieren. Es ist aber Samstag und mein Kopf will sich mal etwas ausruhen ;)
 
Danke sehr für deine Hilfe ich werde mich gleich mal dran setzen wies klappt ;) ich poste dann hier nochmal die finale Version /Teil meines Codes ;) Das spart mir die Arbeit fürs Update nächstes Jahr ;)
 
Noch ein Hinweis: Es ist vielleicht günstiger, 5 oder besser 7 Bilder zu haben. Bei 5 Bildern hüpft es nur an Schaltjahren, bei 7 vergleichst Du den Wochentag.
 
Sicherlich kann man auch von einem bestimmten Datum immer hochrechnen lassen, ob man am 4. Tag der Folge ist. Dann rechnet er auch immer richtig. Nur steigt mit jedem Tag der Rechenaufwand linear an. Man kann natürlich auch hier optimieren. Es ist aber Samstag und mein Kopf will sich mal etwas ausruhen ;)
Wäre auch mein Ansatz gewesen. Ab dem 14.01. kommen die Bilder in derselben Reihenfolge. Differenz zwischen dem aktuellen Tag und dem (willkürlich gewählten) 14.01. sollte sich einfach berechnen lassen. Darüber, wie das intern berechnet wird, würde ich mir keine Gedanken machen, das sollte auch einem iPhone 1G im Jahre 2099 keine Mühe bereiten ;).
 
Und wie würdest du den Ansatz umsetzen ? Tut mir leid ich bin echt neu im ios dev und erst 15 ;)
 
1) iOS berechnet die Differenz an Tagen zwischen dem aktuellen Tag und dem ein mal fest gewählten Startdatum (meinetwegen der 14.1.)
2) Du lässt dir den Modulo zur 4 dieser Differenz berechnen. Das ist immer korrekt ;)

@devrandom: danke für den Denkanstoß. War ne lange Woche *hrhr*

Wie das geht findest Du bei Google und in der Apple Doku.
 
Danke werde ich jetzt mal aus probieren ;)
 
hey sry das ich nochmal nerve aber ich finde in der Doku nix zum Thema hochrechnen
 
Zurück
Oben Unten