Re: Autorotation for a subview
Re: Autorotation for a subview
- Subject: Re: Autorotation for a subview
- From: Henry McGilton (Boulevardier) <email@hidden>
- Date: Tue, 22 Dec 2009 14:15:56 -0800
On Dec 22, 2009, at 11:01 AM, Matt Neuburg wrote:
> On Tue, 22 Dec 2009 12:51:35 -0500, "Eric E. Dolecki" <email@hidden>
> said:
>> I have a view which controls it's UI when rotated. However, if there is a
>> subView in place, it rotates and I'd like to control it's UI too. In my
>> subView the willAnimateRotationToInterfaceOrientation doesn't get fired. I
>> set up the shouldAutorotateToInterfaceOrientation. Does my main view need to
>> call something in my subView to get this to work? I'd think the subView
>> would get the event too but it doesn't.
>
> This sounds like a good time for the view to post an NSNotification. The
> subview can then respond to it. m.
Sounds like overkill --- swatting mosquitoes with sledgehammers.
A potentially better way to approach this is to look at the different roles and
responsibilities of View Controllers and Views, and gain a clearer understanding
of which class of objects does which job . . .
Think of a View Controller as a View *Manager*. The dominant paradigm for
presenting screens of content to users on the iPhone platform consists of a
View Controller managing a single enclosing View which, including all of
its sub-views, represents that screen of content.
In general, try to have your UIViews perform just two responsibilities. First,
and by far the most important, is drawing their content. Second is acting as
a container into which other Views may be added as sub-views. A very
distant third (which is why I said 'two' even though it makes me look as if I
can't count) is handling events, which task is frequently better managed in the
View Controller.
The View Controller implements methods to manage rotation, so
doing the work of View hierarchy layout and sub-view re-positioning and
re-sizing in the View Controller makes more sense than pushing the
job down into the sub-views.
If the View Controller knows about its view's sub-views, it will then know
about their positions and sizes, and can perform simple re-positioning
and re-sizing to accomplish the job.
Finally, please try to use naming schemes where names of objects
bear at least a passing resemblance to what those objects actually are. I
refer to the line of code that reads:
myInfoView = [[InfoViewController alloc]
The code leads one to believe that the class named InfoViewController is a
sub-class of UIViewController. The variable name myInfoView leads one
to believe on casual inspection (and without adequate context) that the variable
references something that's a sub-class of UIView. Which is it ? List readers,
many of whom are trying to help, would be less confused if reasonable naming
schemes were employed. The statement in an earlier message:
My subView is a view controller too.
Can not possibly be the case. A sub-view implies it's a UIView, and a UIView
can not be a UIViewController --- the two classes are on different branches of the
class hierarchy, and neither of them even define protocols that the other
could adopt . . .
We had a thread on this list a couple of months ago where even some of
the more high-powered members of the list had tied themselves in knots and
were arguing at cross purposes because a poster asking for help had allocated
a UIImageView but called it an image . . . If you're asking for help, please try to
write code readable and understandable by other busy people . . .
Cheers,
. . . . . . . . Henry
iPhone App Developer Education --- visit www.nonatomic-retain.com
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden