Re: Application Design
Re: Application Design
- Subject: Re: Application Design
- From: Conrad Shultz <email@hidden>
- Date: Sat, 28 May 2011 11:15:17 -0700
On May 28, 2011, at 6:11, Dan Hopwood <email@hidden> wrote:
> Thanks for your response Steve. I have considered using the
> nsnotification service but what if you need to not only let another
> object know when an event has occurred but you also need to send that
> object some data? For example a user selects an option in a table -
> the selection must be conveyed in some way to the vc I'm pushing on
> the nav controller stack so that it's view is dynamic depending on the
> selection. As far as I'm aware that is not possible using
> notifications.
That's very doable with notifications. See the "object" and "userInfo" methods in NSNotification and corresponding methods in NSNotificationCenter.
> In general I create a new vc/nib for *every* screen I have in the app.
> Let's take a navigation app as an example. Are you saying that the
> hierarchy should be:
>
> -> 'root view controller' (has overall control, contains navigation
> logic and sends data between the containing view controllers)
> ->-> 'nav controller'
> ->-> 'all view controllers to be pushed/popped'
>
> ...where the nav controller and its view controllers are stored and
> initialised inside the 'root view controller'?
Well, I'd say the view controllers aren't "stored" inside the root view controller; they are pushed onto the navigation stack as and when needed. Unless you are doing some caching, I wouldn't store the view controllers outside the navigation stack. (If you do implement caching, make sure you respond to memory warnings by flushing the cache!)
In a navigation based application I feel that your architecture is simplified by design. Since only one view controller (notwithstanding modal view controllers) is on screen at any time, and they are all arranged hierarchically, parents should configure their children before pushing them onto the stack. When children need to communicate back to their parents (for example, if you push an editor view controller from a summary view controller, which needs to be updated when the editor view controller makes changes), you can use KVO or notifications, but if the communication is by design of interest only to the parent and child view controllers, just make the parent the delegate of the child. So if the child, say, had a list of favorite URLs for the user to select, it could call something like [delegate didSelectFavorite:url] which would cause the parent to be updated (and change appearance when the child is popped off the stack).
(Sent from my iPad.)
--
Conrad Shultz
www.synthetiqsolutions.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