2010-11-22 2 views
2

Ich habe einen benutzerdefinierten Ansichtscontroller erstellt, der mit einer NIB initialisiert wird. In der NIB habe ich dem Viewout eine bestimmte Größe gegeben. Wenn ich einen neuen Popover-Controller erstelle und ihn mit meinem benutzerdefinierten Ansichts-Controller initialisiere, erwarte ich, dass der Inhaltsbereich des Popover-Controllers der Größe der in meiner NIB angegebenen Ansicht entspricht, aber diese Größe ignoriert und der Standard-Popover-Controller verwendet wird Größe stattdessen.Kann ein UIPopoverController seine Größe von der NIB des View-Controllers erhalten?

Ich weiß, dass ich die Inhaltsbereichsgröße des Popover im Code angeben kann, aber sollte ich das nicht in Interface Builder tun können?

In meiner ViewDidAppear-Methode des benutzerdefinierten Ansichtscontrollers drucke ich die Breite und Höhe der Ansichtsbreite aus, aber seltsamerweise sind sie beide 0. Was mache ich falsch?

Antwort

3

Sie können keinen UIViewController contentSizeForViewInPopover in der Spitze angeben. Ich setze es gerne in viewDidLoad.

Ihr "Ausdruck" -Code könnte einfach falsch sein. Es ist leicht, durch die feinen Punkte von NSLog zu stolpern. Versuchen Sie es auf diese Weise:

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    NSLog(@"%@", NSStringFromCGSize(self.view.bounds.size)); 
} 

Wenn das nicht funktioniert, etwas anderes vor sich geht.

1

Ja, Sie können es aus dem Storyboard tun:

  1. Legen Sie die Größe der Root-Ansicht im View-Controller.
  2. Im View-Controller Sie eine explizite Größe angeben (standardmäßig bevölkert wird, wenn Sie die Ansicht eine Größe geben), hier ein Bild:

Xcode screenshot

Caveat: Ich habe 2 popovers Ich arbeite gerade an dem ersten Teil - der erste verhält sich sehr gut (sogar mit der Mitte auf dem Bildschirm), der zweite hat mich nur einen halben Tag lang gefragt, warum es die richtige Breite und die falsche Höhe hat. ... grrrr, wenn du keine Pfeilrichtung einrichtest, passiert komisches Zeug.

Verwandte Themen