Alarm einfügen (Storyboard)?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Alarm einfügen (Storyboard)?

    Hallo,
    ich habe jetzt einen Timer erstellt, wo man auf Start klicken kann und dann geht es in Sekunden los. Sobald man auf Start klicken erscheinen zwei neue Buttons mit Stop und Restart und Start verschwindet. Wenn man wieder auf Stop klickt kommt Start dazu. Das klappt ja alles auch, aber ich will wenn die anzeige z.b. 100 sekunden anzeigt, dass den ein alarm kommt (z.b. wie beim wecker) und ein text (halt so ein pop-up) wo dann halt ein text steht und gegebenfalls auch ein Ton, muss aber erstmal nicht sein. Dort sollte dann natürlich auch ein Buztton sein, wo man auf Okay klickt und der Ton bzw. Alarm ist weg. Wichtig vllt. noch, dass mehrere Timer auf den View kommen sollen, also auch mehrere Alarme sollten dann kommen. Ich hab im Internet zwar den Timer gefunden, aber leider nicht den Alarm, vllt. war ich auch einfach nur zu blöd zum suchen :rolleyes: . Aber ich denke mal das geht mit einer if-Funktion. ;)


    P.S. Ich will jetzt nicht soviel fragen, aber wenn ihr noch wisst, wie man die Sekunden ab 59 sekunden halt auch in minuten anzeigen könnte. Halt 56, 57, 58, 59, 1:00, 1:01 und so weiter. Aber wäre schon nett, wenn ihr mir dabei hilft den Alarm zu programmieren ;)

    Vielen Dank für eure Hilfe!

    Viele Grüße

    Asoooooo
  • Ja wie matz schon schrieb ist ein UIAlertView hier das richtige. Für die Konvertierung brauchst du nur einfachste Mathematik und stringWithFormat. Um den Ton abzuspielen schau dir mal das AVFoundation Framework an.
  • Hallo,
    Danke für die Antworten. Ich habs jetzt schonmal hinbekommen, dass der Alarm nach 5 sekunden im View erscheint (mit UIAlertView), aber halt immer nach 5 sekunden, sobald man in diesem View ist, egal ob der Timer läuft oder nicht...
    ich weiß noch nicht wie ich das jetzt mache, dass der Alarm kommt, sobald der Timer auf 5 steht, bzw. sobald das Label 5 zeigt. Ich werd mal weiter schauen ob ich was finde, wenn nicht, vllt. könnt ihr mir ja sagen wie. Aber danke schonmal für den UIAlertView Tipp. :D

    P.S. Mein Code sieht jetzt so aus

    C-Quellcode: 1

    1. #import <UIKit/UIKit.h>
    2. @interface timerController : UIViewController {
    3. IBOutlet UILabel *seconds;
    4. IBOutlet UIButton *start;
    5. IBOutlet UIButton *stop;
    6. IBOutlet UIButton *restart;
    7. NSTimer *timer;
    8. int MainInt;
    9. NSTimer *alertTimer;
    10. }
    11. -(IBAction)start:(id)sender;
    12. -(IBAction)stop:(id)sender;
    13. -(IBAction)restart:(id)sender;
    14. -(void)countup;
    15. -(void)showalert;
    16. @end
    Alles anzeigen


    .m file

    C-Quellcode: 1

    1. #import "timerController.h"
    2. @interface timerController ()
    3. @end
    4. @implementation timerController
    5. -(void)countup {
    6. MainInt += 1;
    7. seconds.text = [NSString stringWithFormat:@"%i", MainInt];
    8. }
    9. -(IBAction)start:(id)sender; {
    10. MainInt = 0;
    11. timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countup) userInfo:nil repeats:YES];
    12. start.hidden = YES;
    13. restart.hidden = NO;
    14. stop.hidden = NO;
    15. }
    16. -(IBAction)stop:(id)sender {
    17. [timer invalidate];
    18. stop.hidden = YES;
    19. restart.hidden = NO;
    20. start.hidden = NO;
    21. }
    22. -(IBAction)restart:(id)sender {
    23. MainInt = 0;
    24. seconds.text = [NSString stringWithFormat:@"%i", MainInt];
    25. }
    26. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    27. {
    28. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    29. if (self) {
    30. // Custom initialization
    31. }
    32. return self;
    33. }
    34. - (void)viewDidLoad
    35. {
    36. alertTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(showalert) userInfo:nil repeats:NO];
    37. stop.hidden = NO;
    38. [super viewDidLoad];
    39. // Do any additional setup after loading the view.
    40. }
    41. -(void)showalert {
    42. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wölfe erschiene" message:@"Die Wölfe sind erschienen" delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
    43. [alert show];
    44. }
    45. - (void)didReceiveMemoryWarning
    46. {
    47. [super didReceiveMemoryWarning];
    48. // Dispose of any resources that can be recreated.
    49. }
    50. @end
    Alles anzeigen
  • Für den Alarm solltest Du Dir auch mal UILocalNotification ansehen.

    Asoooooo schrieb:

    P.S. Ich will jetzt nicht soviel fragen, aber wenn ihr noch wisst, wie man die Sekunden ab 59 sekunden halt auch in minuten anzeigen könnte. Halt 56, 57, 58, 59, 1:00, 1:01 und so weiter. Aber wäre schon nett, wenn ihr mir dabei hilft den Alarm zu programmieren

    Das kannst Du über Modulo-Rechnungen machen. Ungefähr so:

    Quellcode

    1. int theTime = ...;
    2. int theSeconds = theTime % 60;
    3. int theMinutes = (theTime / 60) % 60;
    4. int theHours = theTime / 3600;
    5. NSString *theValue = [NSString stringWithFormat:@"%d:%02d:%02d", theHours, theMinutes, theSeconds];
    „Meine Komplikation hatte eine Komplikation.“
  • Hi,
    ich hab's mal so gemacht, wie ich es gedacht habe, wie du es meinst

    C-Quellcode: 1

    1. #import "timerController.h"
    2. @interface timerController ()
    3. @end
    4. @implementation timerController
    5. -(void)countup {
    6. MainInt += 1;
    7. seconds.text = [NSString stringWithFormat:@"%i", MainInt];
    8. }
    9. -(IBAction)start:(id)sender; {
    10. MainInt = 0;
    11. timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countup) userInfo:nil repeats:YES];
    12. start.hidden = YES;
    13. restart.hidden = NO;
    14. stop.hidden = NO;
    15. }
    16. -(IBAction)stop:(id)sender {
    17. [timer invalidate];
    18. stop.hidden = YES;
    19. restart.hidden = NO;
    20. start.hidden = NO;
    21. }
    22. -(IBAction)restart:(id)sender {
    23. MainInt = 0;
    24. seconds.text = [NSString stringWithFormat:@"%i", MainInt];
    25. }
    26. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    27. {
    28. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    29. if (self) {
    30. // Custom initialization
    31. }
    32. return self;
    33. }
    34. - (void)viewDidLoad
    35. {
    36. if (MainInt == 5) {
    37. alertTimer = [NSTimer scheduledTimerWithTimeInterval:(MainInt == 5) target:self selector:@selector(showalert) userInfo:nil repeats:NO];
    38. }
    39. stop.hidden = NO;
    40. [super viewDidLoad];
    41. // Do any additional setup after loading the view.
    42. }
    43. -(void)showalert {
    44. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wölfe erschiene" message:@"Die Wölfe sind erschienen" delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
    45. [alert show];
    46. }
    47. - (void)didReceiveMemoryWarning
    48. {
    49. [super didReceiveMemoryWarning];
    50. // Dispose of any resources that can be recreated.
    51. }
    52. @end
    Alles anzeigen

    So, ich habe eine if-Funktion erstellt und gesagt, dass wenn if (MainInt == 5) zeige den AlertView. Wahrscheinlich ist irgendwie alles falsch was ich gemacht habe ;) . Naja, ich dachte vielleicht geht es ja so einfach... anscheinend nicht :D. Vielleicht kannst du mir ja noch mal helfen. Ich stell mich grad ein bisschen blöd an.
  • Schreib das nicht in die viewDidLoad. Die wird eben nur aufgerufen wenn der View geladen wurde. Und in der if Schleife erstellst du keinen neuen Timer sondern zeigst den Alert an also: [self showalert];
  • Ok freut mich das du es hinbekommen hast. PS: Schau dir mal CamelCase an. Mir sind solche Dinge wie #import "timerController.h" oder MainInt aufgefallen. Das wird auf Dauer sehr unübersichtlich.