Popover mit integriertem Navigationscontroller berücksichtigt die Größe des Back-Navi nicht

89

Ich habe einen UIPopoverController, der einen UINavigationController hostet, der eine kleine Hierarchie von Ansichtscontrollern enthält.

Ich habe die Dokumente befolgt und für jeden Ansichts-Controller die Popover-Kontextgröße der Ansicht wie folgt festgelegt:

[self setContentSizeForViewInPopover:CGSizeMake(320, 500)];

(Größe für jeden Controller unterschiedlich)

Dies funktioniert wie erwartet, wenn ich in der Hierarchie vorwärts navigiere. Das Popover animiert automatisch Größenänderungen, um dem Push-Controller zu entsprechen.

Wenn ich jedoch über die Schaltfläche "Zurück" der Navigationsleiste mit "Zurück" durch den Ansichtsstapel navigiere, ändert sich die Größe des Popovers nicht - es bleibt so groß wie die tiefste Ansicht, die erreicht wurde. Das scheint mir kaputt zu sein; Ich würde erwarten, dass das Popover die Größen berücksichtigt, die beim Popup durch den Ansichtsstapel eingerichtet werden.

Vermisse ich etwas

Vielen Dank.

Ben Zotto
quelle
Wo stellen Sie die Popover-Größe ein? Setzen Sie es jedes Mal zurück, wenn ein View Controller angezeigt wird (z. B. in viewWillAppear:)?
Ole Begemann
Welche Dokumentation meinst du, du bist gefolgt?
Tom Hamming

Antworten:

94

Ok, ich hatte mit dem gleichen Problem zu kämpfen. Keine der oben genannten Lösungen hat für mich ganz gut funktioniert. Deshalb habe ich mich entschlossen, eine kleine Untersuchung durchzuführen und herauszufinden, wie dies funktioniert. Folgendes habe ich entdeckt: - Wenn Sie das einstellencontentSizeForViewInPopoverIn Ihrem Ansichts-Controller wird es vom Popover selbst nicht geändert - auch wenn sich die Popover-Größe beim Navigieren zu einem anderen Controller ändern kann. - Wenn sich die Größe des Popovers ändert, während Sie zu einem anderen Controller navigieren, während Sie zurückkehren, wird die Größe des Popovers nicht wiederhergestellt. - Das Ändern der Größe des Popovers in viewWillAppear führt zu einer sehr seltsamen Animation (wenn Sie beispielsweise PopController im Popover verwenden) - Ich würde es nicht empfehlen - Für mich würde das Einstellen der fest codierten Größe innerhalb des Controllers überhaupt nicht funktionieren - meine Controller müssen manchmal groß sein, manchmal klein - Controller, die sie präsentieren, haben jedoch die Idee über die Größe

Eine Lösung für all diese Schmerzen lautet wie folgt: Sie müssen die Größe von currentSetSizeForPopoverin viewDidAppear zurücksetzen. Aber Sie müssen vorsichtig sein, wenn Sie die gleiche Größe einstellen, die bereits im Feld currentSetSizeForPopoverfestgelegt wurde, ändert das Popover die Größe nicht. Dazu können Sie zunächst die falsche Größe festlegen (die sich von der zuvor festgelegten unterscheidet) und anschließend die richtige Größe festlegen. Diese Lösung funktioniert auch dann, wenn Ihr Controller im Navigationscontroller verschachtelt ist und Popover seine Größe entsprechend ändert, wenn Sie zwischen den Controllern zurück navigieren.

Sie können auf UIViewController problemlos eine Kategorie mit der folgenden Hilfsmethode erstellen, mit der Sie die Größe festlegen können:


- (void) forcePopoverSize {
    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, currentSetSizeForPopover.height - 1.0f);
    self.contentSizeForViewInPopover = fakeMomentarySize;
    self.contentSizeForViewInPopover = currentSetSizeForPopover;
}

Rufen Sie es dann einfach im -viewDidAppeargewünschten Controller auf.

krasnyk
quelle
1
Die obige Kategorie ist der einzige (vernünftige) Weg, wie ich es zum Laufen bringen kann. Vielen Dank.
RickiG
Das funktioniert. Ich muss herausfinden, wie verhindert werden kann, dass die Tabellenansicht im Kontraktionsbereich "schwarz" wird, wenn das Popover verkleinert wird, aber diese Lösung ermöglicht es (endlich!) Wirklich, dass das Popover für jede Stapelebene auf die richtige Größe verschoben wird. Vielen Dank!
Ben Zotto
2
Ich habe es in [UIView beginAnimations: nil context: nil] eingewickelt. und [UIView commitAnimations]; - macht es weniger nervig.
Dustin
2
Für mich mit self.contentSizeForViewInPopover = CGSizeZero; eine Zeile gespeichert und hatte den gleichen Effekt. Danke vielmals!
rob5408
Ich könnte diese Lösung nur zum Laufen bringen, wenn ich self.contentSizeForPopover = CGSizeZero; in meiner viewWillDisappear-Methode des VC, von dem ich aufgetaucht bin.
LightningStryk
18

So habe ich es für iOS 7 und 8 gelöst:

In iOS 8 packt iOS die gewünschte Ansicht im Popover stillschweigend in den präsentierten ViewController des präsentierenden ViewController-View-Controllers. Es gibt ein WWDC-Video von 2014, in dem erklärt wird, was mit dem Popovercontroller neu ist, wo sie dies ansprechen.

Für Ansichtscontroller, die auf dem Navigationscontrollerstapel angezeigt werden und alle ihre eigene Größe wünschen, müssen diese Ansichtscontroller (unter iOS 8) diesen Code aufrufen, um die bevorzugte Inhaltsgröße dynamisch festzulegen:

self.presentingViewController.presentedViewController.preferredContentSize = CGSizeMake(320, heightOfTable);

Ersetzen Sie heightOfTable durch Ihre berechnete Tabellen- oder Ansichtshöhe.

Um viel doppelten Code zu vermeiden und eine gemeinsame iOS 7- und iOS 8-Lösung zu erstellen, habe ich in UITableViewController eine Kategorie erstellt, um diese Arbeit auszuführen, wenn viewDidAppear in meinen Tabellenansichten aufgerufen wird:

- (void)viewDidAppear:(BOOL)animated 
{
    [super viewDidAppear:animated];
    [self setPopOverViewContentSize];
}

Kategorie.h:

#import <UIKit/UIKit.h>

@interface UITableViewController (PreferredContentSize)

- (void) setPopOverViewContentSize;

@end

Kategorie.m:

#import "Category.h"

@implementation UITableViewController (PreferredContentSize)

- (void) setPopOverViewContentSize
{
    [self.tableView layoutIfNeeded];
    int heightOfTable = [self.tableView contentSize].height;

    if (heightOfTable > 600)
        heightOfTable = 600;

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        if ([[[UIDevice currentDevice] systemVersion] floatValue] < 8.0)
            self.preferredContentSize=CGSizeMake(320, heightOfTable);
        else
            self.presentingViewController.presentedViewController.preferredContentSize = CGSizeMake(320, heightOfTable);
    }
}

@end
Wesley Filleman
quelle
Dein Tipp mit presentingViewControllerfunktioniert. Wenn ich die preferredContentSizein viewDidLoadein seltsames Verhalten ist: Navigating wieder von einer anderen Ansicht - Controller in den popover führt zu einer falschen popover Größe ändern. Es scheint, als wäre eine Popover-Größe von Null festgelegt worden, aber die Größe ist korrekt. In einem solchen Fall nimmt das Popover die gesamte Bildschirmhöhe ein. Wissen Sie vielleicht, warum dies der Fall ist? Ich habe die Einschränkung mit 600 Punkten nicht implementiert, da Sie nach meiner Erfahrung mit dem Betriebssystem keine höhere Größe als die Bildschirmgröße angeben können.
Testen
Versuchen Sie viewDidAppear anstelle von viewDidLoad, damit der Code ausgeführt wird, wenn Sie wieder im Stapel navigieren.
Wesley Filleman
So habe ich es gemacht. Aber ich verstehe nicht, warum es nicht funktioniert, wenn Sie dies einstellen in viewDidLoad...
Testen
1
Leider hat Apple den Ansichtsstapel nicht so geschrieben. Diese contentSize-Werte bleiben nicht wirklich bestehen, sobald der viewController nicht mehr sichtbar ist. Aus diesem Grund müssen Sie das Popover jedes Mal "erinnern", wenn eine Ansicht durch Drücken oder Pop in den Vordergrund tritt. Ich empfehle, einen Fehlerbericht bei Apple einzureichen, wenn Sie der Meinung sind, dass das Popover diese Informationen beibehalten soll.
Wesley Filleman
12

Dies ist eine Verbesserung der Antwort von krasnyk .
Ihre Lösung ist großartig, aber nicht reibungslos animiert.
Eine kleine Verbesserung ergibt eine schöne Animation:

Entfernen Sie die letzte Zeile in der - (void) forcePopoverSizeMethode:

- (void) forcePopoverSize {
    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, currentSetSizeForPopover.height - 1.0f);
    self.contentSizeForViewInPopover = fakeMomentarySize;
}

Setzen Sie [self forcePopoverSize] in die - (void)viewWillAppear:(BOOL)animatedMethode:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self forcePopoverSize];
}

Und schließlich - gewünschte Größe in - (void)viewDidAppear:(BOOL)animatedMethode einstellen :

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    self.contentSizeForViewInPopover = currentSetSizeForPopover;
}
Adnako
quelle
8

Sie müssen die Inhaltsgröße erneut einstellen viewWillAppear. Durch Aufrufen der Delagate-Methode, mit der Sie die Größe des Popovercontrollers festlegen. Ich hatte auch das gleiche Problem. Aber als ich das hinzufügte, löste sich das Problem.

Noch etwas: Wenn Sie Beta-Versionen unter 5 verwenden, sind die Popover schwieriger zu verwalten. Ab Beta-Version 5 scheinen sie freundlicher zu sein. Es ist gut, dass die endgültige Version veröffentlicht wurde. ;)

Hoffe das hilft.

Madhup Singh Yadav
quelle
Ich hasse das auch. Es hat mich auch erwischt. Apple: Warum können wir ein Popover mit Navcontroller nicht auf eine bestimmte Größe sperren?!
Jann
2
Das Einstellen der Inhaltsgröße hat bei viewWillAppearmir nicht funktioniert. Das explizite Einstellen der Popover-Größe hat funktioniert, aber das ist Ghetto.
Ben Zotto
@quixoto Ich weiß nicht, was dein Problem war, aber ich benutze immer noch das gleiche und es funktioniert perfekt.
Madhup Singh Yadav
5

In dem -(void)viewDidLoadvon allen View - Controller Sie in der Navigation - Controller verwenden, fügt:

[self setContentSizeForViewInPopover:CGSizeMake(320, 500)];
SumiSadiq
quelle
3

Ich habe die Größe in der animierten Methode viewWillDisappear: (BOOL) des Ansichts-Controllers zurückgesetzt, von dem aus zurück navigiert wird:

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    CGSize contentSize = [self contentSizeForViewInPopover];
    contentSize.height = 0.0;
    self.contentSizeForViewInPopover = contentSize;
}

Wenn dann die Ansicht angezeigt wird, zu der zurück navigiert wird, setze ich die Größe entsprechend zurück:

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    CGSize contentSize;
    contentSize.width = self.contentSizeForViewInPopover.width;
    contentSize.height = [[self.fetchedResultsController fetchedObjects] count] *  self.tableView.rowHeight;
    self.contentSizeForViewInPopover = contentSize;
}
Greg C.
quelle
Hmm .. Reset war nicht erforderlich. Ich habe self.contentSizeForViewInPopover = self.view.frame.size in alle viewWillAppear aller View-Controller eingefügt.
Alleine
Was würde ich für fetchedResultsController fetchedObjects setzen? Ich kann das nicht zum Laufen bringen
Jules
2

Für iOS 8 funktioniert Folgendes:

- (void) forcePopoverSize {
    CGSize currentSetSizeForPopover = self.preferredContentSize;
    CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, currentSetSizeForPopover.height - 1.0f);
    self.preferredContentSize = fakeMomentarySize;
    self.navigationController.preferredContentSize = fakeMomentarySize;
    self.preferredContentSize = currentSetSizeForPopover;
    self.navigationController.preferredContentSize = currentSetSizeForPopover;
}

Übrigens denke ich, das sollte mit früheren iOS-Versionen kompatibel sein ...

Null
quelle
Ich hatte das Problem mit einer App in iOS8, die mit iOS7 SDK kompiliert wurde. Das hat funktioniert, danke.
Climbatize
Rufen Sie diese Methode willTransitionToTraitCollectionim animateAlongsideTransitionAbschlussblock auf, um die Größe beim Ändern der Drehung zu korrigieren.
Geva
2
Well i worked out. Have a look.


Made a ViewController in StoryBoard. Associated with PopOverViewController class.


import UIKit

class PopOverViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        self.preferredContentSize = CGSizeMake(200, 200)

        self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: "dismiss:")

    }

    func dismiss(sender: AnyObject) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }
}




See ViewController:


//
//  ViewController.swift
//  iOS8-PopOver
//
//  Created by Alvin George on 13.08.15.
//  Copyright (c) 2015 Fingent Technologies. All rights reserved.
//

import UIKit

class ViewController: UIViewController, UIPopoverPresentationControllerDelegate
{
    func showPopover(base: UIView)
    {
        if let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("popover") as? PopOverViewController {


            let navController = UINavigationController(rootViewController: viewController)
            navController.modalPresentationStyle = .Popover

            if let pctrl = navController.popoverPresentationController {
                pctrl.delegate = self

                pctrl.sourceView = base
                pctrl.sourceRect = base.bounds

                self.presentViewController(navController, animated: true, completion: nil)
            }
        }
    }

    override func viewDidLoad(){
        super.viewDidLoad()
    }

    @IBAction func onShow(sender: UIButton)
    {
        self.showPopover(sender)
    }

    func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
        return .None
    }
}


Note: The func showPopover(base: UIView) method should be placed before ViewDidLoad. Hope it helps !
AG
quelle
1

Bei mir funktioniert diese Lösung. Dies ist eine Methode aus meinem View Controller, die UITableViewController erweitert und der Root-Controller für UINavigationController ist.

-(void)viewDidAppear:(BOOL)animated {
     [super viewDidAppear:animated];
     self.contentSizeForViewInPopover = self.tableView.bounds.size;
}

Vergessen Sie nicht, die Inhaltsgröße für den View Controller festzulegen, den Sie in den Navigationsstapel verschieben möchten

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
    dc = [[DetailsController alloc] initWithBookmark:[[bookmarksArray objectAtIndex:indexPath.row] retain] bookmarkIsNew:NO];
    dc.detailsDelegate = self;
    dc.contentSizeForViewInPopover = self.contentSizeForViewInPopover;
    [self.navigationController pushViewController:dc animated:YES]; 
 }
Koteg
quelle
1

Wenn Sie sich den Assambler vorstellen können, denke ich, dass dies etwas besser ist:

- (nichtig) forcePopoverSize {
    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    self.contentSizeForViewInPopover = CGSizeMake (0, 0);
    self.contentSizeForViewInPopover = currentSetSizeForPopover;
}}
user1375355
quelle
2
Noch besser wird es sein, es CGSizeZerostattdessen selbst zu machenCGSizeMake(0,0)
Julian Król
1

Die akzeptierte Antwort funktioniert mit iOS 8 nicht UINavigationControllereinwandfrei. Ich habe meine eigene Unterklasse für die Verwendung in diesem Popover erstellt und die Methode folgendermaßen überschrieben preferredContentSize:

- (CGSize)preferredContentSize {
    return [[self.viewControllers lastObject] preferredContentSize];
}

Anstatt forcePopoverSize(Methode von @krasnyk implementiert) in aufzurufen, habe viewDidAppearich mich außerdem entschlossen, einen viewController (der Popover anzeigt) als Delegaten für die zuvor erwähnte Navigation (in Popover) festzulegen und Folgendes zu tun (was Force-Methode tut) in:

-(void)navigationController:(UINavigationController *)navigationController
      didShowViewController:(UIViewController *)viewController 
                   animated:(BOOL)animated  

Methode für eine übergebene delegieren viewController. Eine wichtige Sache, forcePopoverSizeeine UINavigationControllerDelegateMethode auszuführen, ist in Ordnung, wenn Sie diese Animation nicht benötigen, um glatt zu sein. Wenn ja, lassen Sie sie dann in viewDidAppear.

Julian Król
quelle
Warum abstimmen? Vielleicht ein anderes Feedback als nur Meinungsverschiedenheiten :)
Julian Król
hallo @ julianKról, kannst du dir diesen stackoverflow.com/questions/28112617/… ansehen , ich habe das gleiche problem.
Ranjit
Danke, das hat mir geholfen. Vielleicht möchten Sie oben in Ihrem Kommentar klarstellen, dass das Problem darin besteht, dass Sie den Navigationscontroller PreferredContentSize sowie den VisibleVC PreferredContentSize aktualisieren müssen. Das Einstellen beider Funktionen funktioniert also auch direkt.
Michael Kernahan
0

Ich hatte das gleiche Problem, aber Sie möchten die Inhaltsgröße nicht in der viewWillAppear- oder viewWillDisappear-Methode festlegen.

AirPrintController *airPrintController = [[AirPrintController alloc] initWithNibName:@"AirPrintController" bundle:nil];
airPrintController.view.frame = [self.view frame];
airPrintController.contentSizeForViewInPopover = self.contentSizeForViewInPopover;
[self.navigationController pushViewController:airPrintController animated:YES];
[airPrintController release];

Legen Sie die contentSizeForViewInPopover-Eigenschaft für diesen Controller fest, bevor Sie diesen Controller an navigationController senden

Vikas Sawant
quelle
0

Ich hatte Glück, indem ich Folgendes in die Ansicht eingefügt habe:

[self.popoverController setPopoverContentSize:self.contentSizeForViewInPopover animated:NO];

Obwohl dies in dem Fall, in dem Sie Popovers unterschiedlicher Größe drücken / knallen, möglicherweise nicht gut animiert ist. Aber in meinem Fall funktioniert perfekt!

Chris
quelle
0

Alles was Sie tun müssen ist:

- Fügen Sie in der viewWillAppear-Methode von popOvers contentView das unten angegebene Snippet hinzu. Sie müssen die Größe des PopOvers beim Laden beim ersten Mal angeben.

CGSize size = CGSizeMake(width,height);
self.contentSizeForViewInPopover = size;
Deepukjayan
quelle
0

Ich hatte dieses Problem mit einem Popover-Controller, dessen popoverContentSize = CGSizeMake (320, 600) zu Beginn war, der jedoch größer wurde, wenn ich durch seinen ContentViewController (einen UINavigationController) navigierte.

Der Navigationscontroller hat nur benutzerdefinierte UITableViewController gepusht und gepoppt, daher habe ich in viewDidLoad meiner benutzerdefinierten Tabellenansicht-Controller-Klasse self.contentSizeForViewInPopover = CGSizeMake (320, 556) festgelegt.

Die 44 Pixel weniger sind für die Navigationsleiste des Nav-Controllers verantwortlich, und jetzt habe ich keine Probleme mehr.

Leukosaima
quelle
0

Fügen Sie dies in alle Ansichts-Controller ein, die Sie in das Popover drücken

CGSize currentSetSizeForPopover = CGSizeMake(260, 390);
CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f,
                                      currentSetSizeForPopover.height - 1.0f);
self.contentSizeForViewInPopover = fakeMomentarySize;
self.contentSizeForViewInPopover = currentSetSizeForPopover;
alok
quelle
Legen Sie in viewwillAppear method.and currentSetSizeForPopover die gewünschte Größe fest.
Alok
0

Das gleiche Problem wurde behoben, indem die Größe der Inhaltsansicht auf Navigationscontroller und Ansichtscontroller festgelegt wurde, bevor der Init von UIPopoverController platziert wurde.

     CGSize size = CGSizeMake(320.0, _options.count * 44.0);
    [self setContentSizeForViewInPopover:size];
    [self.view setFrame:CGRectMake(0.0, 0.0, size.width, size.height)];
    [navi setContentSizeForViewInPopover:size];

    _popoverController = [[UIPopoverController alloc] initWithContentViewController:navi];
Tomasz Dubik
quelle
0

Ich möchte nur eine andere Lösung anbieten, da keine dieser Lösungen für mich funktioniert hat ...

Ich benutze es tatsächlich mit diesem https://github.com/nicolaschengdev/WYPopoverController

Wenn Sie Ihr Popup zum ersten Mal aufrufen, verwenden Sie dies.

if ([sortTVC respondsToSelector:@selector(setPreferredContentSize:)]) {
   sortTVC.preferredContentSize = CGSizeMake(popoverContentSortWidth,
        popoverContentSortHeight);
}
else 
{
   sortTVC.contentSizeForViewInPopover = CGSizeMake(popoverContentSortWidth, 
        popoverContentSortHeight);
}

Verwenden Sie dies dann in diesem Popup.

-(void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:YES];

  if ([self respondsToSelector:@selector(setPreferredContentSize:)]) {
    self.preferredContentSize = CGSizeMake(popoverContentMainWidth, 
        popoverContentMainheight);
  }
  else 
  {
    self.contentSizeForViewInPopover = CGSizeMake(popoverContentMainWidth, 
        popoverContentMainheight);
  }
}

-(void)viewDidDisappear:(BOOL)animated {
 [super viewDidDisappear:YES];

self.contentSizeForViewInPopover = CGSizeZero;

}

Dann wiederholen Sie für untergeordnete Ansichten ...

Jules
quelle
0

Dies ist in iOS7 der richtige Weg, um dies zu tun. Legen Sie die bevorzugte Inhaltsgröße in viewDidLoad in jedem Ansichts-Controller im Navigationsstapel fest (nur einmal ausgeführt). Rufen Sie dann in viewWillAppear einen Verweis auf den Popover-Controller ab und aktualisieren Sie dort die contentSize.

-(void)viewDidLoad:(BOOL)animated
{
    ...

    self.popoverSize = CGSizeMake(420, height);
    [self setPreferredContentSize:self.popoverSize];
}

-(void)viewWillAppear:(BOOL)animated
{
    ...

    UIPopoverController *popoverControllerReference = ***GET REFERENCE TO IT FROM SOMEWHERE***;
    [popoverControllerReference setPopoverContentSize:self.popoverSize];
}
anders
quelle
0

Die @ krasnyk-Lösung funktionierte in früheren iOS-Versionen gut, in iOS8 jedoch nicht. Die folgende Lösung hat bei mir funktioniert.

    - (void) forcePopoverSize {
        CGSize currentSetSizeForPopover = self.preferredContentSize;
       //Yes, there are coupling. We need to access the popovercontroller. In my case, the popover controller is a weak property in the app's rootVC.
        id mainVC = [MyAppDelegate appDelegate].myRootVC;
        if ([mainVC valueForKey:@"_myPopoverController"]) {
            UIPopoverController *popover = [mainVC valueForKey:@"_myPopoverController"];
            [popover setPopoverContentSize:currentSetSizeForPopover animated:YES];
        }
    }

Es ist nicht die beste Lösung, aber es funktioniert.

Der neue UIPopoverPresentationController hat auch das Problem der Größenänderung :(.

Clement Prem
quelle
1
Vielleicht, anstatt den View Controller über die AppDelegate-Eigenschaft zu erreichen, sollten Sie meine Lösung in Betracht ziehen (scheint sauberer zu sein)
Julian Król
Ja, dies war die schnellste Lösung, ohne meine vorhandene Codebasis zu ändern. Übrigens versuchen Sie Ihre Lösung
Clement Prem
0

Sie müssen die preferredContentSizeEigenschaft des NavigationControllers wie folgt festlegen viewWillAppear:

-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationController.preferredContentSize = CGSizeMake(320, 500);}
Pablo Alonso González
quelle