Wie kann sich ein TableView in einem NavigationController in einem PopOver selbst schließen?

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

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2020 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Wie kann sich ein TableView in einem NavigationController in einem PopOver selbst schließen?

    Hallo zusammen,
    ich bekomme es leider nicht hin...

    Ich habe:
    FirstViewController.h und .m
    FilesTableViewControler.h und .m

    In StoryBoard habe ich den TableView in einen NavigationController gepackt. Der wiederum wird von einem Button im FirstViewController via PopOver Segue gestartet. Segue auch im Storyboard erstellt. In der ToolBar des NavigationControllers habe ich extra Buttons hinzugefügt, unter anderem einen "Import" Button. Bei Click ruft es das in FilesTableViewController.m auf:

    Quellcode

    1. - (void) importAction {
    2. [[NSNotificationCenter defaultCenter]postNotificationName: @"importFiles" object: nil];
    3. [self.navigationController popToRootViewControllerAnimated:YES];
    4. }


    Die erste Anweisung statrtet den eigentlichen Task und alles funktioniert soweit perfekt.
    Nun sollte aber dieser PopOver auch gleich komplett geschlossen werden. Ich weiß, daß die zweite Anweisung nur wieder den obersten View im Stack anzeigt. Ich bräuchte etwas, was weiter geht un den kompletten PopOver schließt....
  • Thallius schrieb:

    http://developer.apple.com/library/ios/#…/Reference.html



    Hallo,
    klar hab ich das ;)

    Du meinst sicher:

    Quellcode

    1. - (void)dismissPopoverAnimated:(BOOL)animated


    Die Frage ist nur, wie komme ich an den PopOver ran? Habs ja im InterfaceBuilder/StoryBoard als Segue PopOver eingetragen.
  • matz schrieb:

    Mit dem Identifier


    Ja, ich habs. Also im Prinzip die Segue abfangen und zwischenspeichern und dann den Dismiss aus der TableView Klasse via Notification remote aufgerufen.

    Für alle interessierten:

    Im Storyboard einen Identifier für die PopOver Segue hinterlegt.
    In FirstView.h:

    Quellcode

    1. @property (nonatomic, weak) UIPopoverController* storePopover;

    In FirstView.m:

    Quellcode

    1. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    2. if ([segue.identifier isEqualToString:@"importFilesSegue"]) {
    3. self.storePopover = ((UIStoryboardPopoverSegue*)segue).popoverController;
    4. }
    5. }
    6. - (void)viewDidLoad
    7. {
    8. [super viewDidLoad];
    9. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(importFiles) name:@"importFiles" object:nil];
    10. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeImportFilesPopOver) name:@"closeImportFilesPopOver" object:nil];
    11. }
    12. - (void) closeImportFilesPopOver {
    13. [self.storePopover dismissPopoverAnimated:YES];
    14. }
    Alles anzeigen

    Und dann der Aufruf im TableView:

    Quellcode

    1. - (void) importAction {
    2. [[NSNotificationCenter defaultCenter]postNotificationName: @"importFiles" object: nil];
    3. [[NSNotificationCenter defaultCenter]postNotificationName: @"closeImportFilesPopOver" object: nil];
    4. }