MainViewController and SettingViewController - Wie schreibe ich Daten von einem View Controller zum anderen und Animiere es schön?

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

  • MainViewController and SettingViewController - Wie schreibe ich Daten von einem View Controller zum anderen und Animiere es schön?

    Hallo,

    ich hänge an einem Punkt und weiß nicht wie ich das am besten lösen soll. Um es einfach zu erklären beschreibe ich follgendes Beispiel:
    Ich will einfach eine SettingsView haben, so wie in vielen Programmen üblich, die eine Globale Varbiable im MainViewController setzt.

    Ich habe einen:
    - MainViewController H und M mit Xib Datei. Dort ist nur ein Button (so ein kleiner süsser Info Button wie in ConvertBot).
    - In der H Datei ist noch eine Globale Intager namens "Settings"

    - SettingViewController H und M mit Xib Datei. Dort sind nur 2 Buttons einen "Close" und ein "Set me"


    Nun mein Problem:

    Quellcode

    1. - (IBAction)buttonLoadSettings:(id)sender {
    2. [UIView beginAnimations:nil context:NULL];
    3. [UIView setAnimationDuration:1.0f];
    4. [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView: self.view cache:YES];
    5. [self.view addSubview:SettingView.view];
    6. [UIView commitAnimations];
    7. }

    Dieser läd meine View und macht einen schönen Flip left. Jetzt will ich aber, dass wenn man den Close Button in der SettingsView drück, das Ganze auch wieder mit einem Flip nach Rechts zurück flipt.

    In meiner SettingsViewController.m steht das ganze noch so drin, dass macht natürlich keine Flip

    Quellcode

    1. - (IBAction)buttonCloseView:(id)sender {
    2. [self.view removeFromSuperview];
    3. }


    Mein Button "Set Me" soll in der Globalen Variable in meinem MainViewController eine 12 setzen und gleichzeitg noch eine Funktion "Settings Finished" aufrufen.

    Quellcode

    1. - (IBAction)buttonSetMe:(id)sender {
    2. //set Settings to 12
    3. }


    Ich hoffe ihr versteht das und könnt mir helfen.

    EDIT: Ein Beispiel, das hilft fals jemand ein ähnliches Problem hat: timneill.net/2010/09/modal-view-controller-example-part-1/

    Mfg und 1000 Dank predator
    in Bearbeitung

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von predator747 ()

  • Konkret würde das dann so ausehen;

    Hinzufügen:

    Quellcode

    1. [self setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    2. [self presentModalViewController:SettingsView animated:YES];


    Entfernen:

    Quellcode

    1. [self dismissModalViewController:SettingsView animated:YES];


    Dann müsstest du allerdings noch die Property setzen wie es dir passt, damit du das dann am Ende deiner Finish Methode alles schickt wieder "rückgängig" machen kannst
  • Hey leute ihr seid super danke echt, es hat geklappt und ich hab mich mega gefreut.

    Der hier ist ja auch extrem gut:

    Quellcode

    1. setModalTransitionStyle:UIModalTransitionStylePartialCurl


    Das hinzufügen habe ich dann so realisiert bzw. so hats dann geklappt:

    Quellcode

    1. [settingsView setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    2. [self presentModalViewController:settingsView animated:YES];

    Das entfernen hat gleich geklappt.

    Jetzt hab ich noch ein Problem wie kann ich von meinem SettingsView Daten in mein MainView schreiben?
    Und wie kann ich meine "settingsFinish" function, die ja auch in der MainView ist aufrufen und dieser Daten übergeben.
    Irgendwie muss ich ja meiner MainView sagen, dass der User jetzt fertig mit den Settings ist und diese übernommen werden können?
    Danke nochmal für euere Hilfe
    in Bearbeitung
  • Naja - (void)viewWillAppear:(BOOL)animated; zu nehmen wäre glaub ich ein bisschen ungeschickt.
    Wenn ich nur eine View hab funktioniert es aber es führt die Methode auch aus wenn er die App zum erstmal läd und wenn ich z.B. noch ein SecondView hinzufüge.
    Ein eigenes Delegate zu erstellen wär glaub ich die beste Lösung. So könnte ich z.B. eine ViewWillAppearFromSettings hinzufügen und eine ViewWillAppeareFrom SecondView.
    Alledings habe ich noch nie ein Delegate erstellt. Ich versuch es jetzt mal und wenn ich nicht weiter komm frag ich hier wieder.

    Danke und Grüße predator747
    in Bearbeitung