Sorry it's taken me a while to get to this. I ran my own tests and what I see 
is buggy (i.e. not what the docs would seem to advertise) but not identical to 
what you describe.

Assuming the UINavigationController does nothing about setting its own size, 
and that (as I suggested) each contained view controller's 
contentSizeForViewinPopover is set, what I see is that when a view is pushed or 
popped on the UINavigationController, the popover does animated correctly in 
terms of width, but its height only changes if the new height is *larger* than 
the current height - the height will never get *smaller*.

So for example if the root view controller's stated size is 320,400 and the 
secondary view controller's stated size is 400,600, the popover appears the 
correct size at the outset and then animates to the correct size when the 
secondary view controller is pushed; but when the secondary view controller is 
popped, the popover changes width but not height.

Thus it does seem like a good idea to keep all contained views the same height. 
I really don't like the look of the resulting width animation, either, so maybe 
it's best if they really are all the same size!

I was able to work around the problem, though, without the use of delayed 
performance, by implementing the nav controller's delegate method:

- (void)navigationController:(UINavigationController *)navigationController 
       didShowViewController:(UIViewController *)viewController 
                    animated:(BOOL)animated {
    navigationController.contentSizeForViewInPopover = 
viewController.contentSizeForViewInPopover;
}

To be sure, I'm just doing here what I would have expected the nav controller 
to do for me, but at least it works.

m.

On Dec 18, 2010, at 12:24 PM, Gordon Apple wrote:

> I've tried a variety of means to fix this, but the animations seem to
> collide and the nav controller wins.  Thus the delayed invocation in
> resetting the size to where it should be.  I notice that Apple's Pages app
> simply keeps the popover size the same for all panels, so it avoids the
> problem.
> 
> 
> On 12/17/10 10:49 AM, "Matt Neuburg" <m...@tidbits.com> wrote:
> 
>> On Thu, 16 Dec 2010 14:37:00 -0600, Gordon Apple <g...@ed4u.com> said:
>>> I've Googled this and have seen that others have had this problem, but no
>>> good solutions.  When using a UINavigationController in a popover, where the
>>> content can be different sizes, the nav controller seems to always wants to
>>> make the popover full screen height, ignoring popover size settings.  The
>>> only way I've found to defeat it is to reset the popover size with a 0.5 sec
>>> delayed invocation.  It works, but it's ugly.  It expands, then contracts to
>>> the set size.  Is there any better way to do this?  (I'm still on 3.2
>>> because I want to make sure it works there.)
>> 
>> My experience is that if your navigation controller's root view controller
>> supplies its own popover size in contentSizeForViewInPopover, the navigation
>> controller does exactly the right thing - it expands that size to allow for
>> its own nav bar, and passes this on up to the popover controller, which sizes
>> the popover correctly. (If you're not seeing that, it may be because you're
>> testing under 3.2; I have no idea.) m.

--
matt neuburg, phd = m...@tidbits.com, http://www.tidbits.com/matt/
pantes anthropoi tou eidenai oregontai phusei
Among the 2007 MacTech Top 25, http://tinyurl.com/2rh4pf
AppleScript: the Definitive Guide, 2nd edition
http://www.tidbits.com/matt/default.html#applescriptthings
Take Control of Exploring & Customizing Snow Leopard
http://tinyurl.com/kufyy8
RubyFrontier! http://www.apeth.com/RubyFrontierDocs/default.html
TidBITS, Mac news and reviews since 1990, http://www.tidbits.com


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to