| |||
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] |
Erik Buck wrote:
On Jul 31, 2005, at 11:53 AM, John Stiles wrote:
There are lots of perfectly legitimate reasons to hide a control. In my case, I was writing an app which let you install our games. There was a dialog which, depending on which game you're installing, would either ask you for:
- your name
- your name and a CD-key
- your name and two CD-keys
Why not just disable the fields that do not apply ? When you hide a filed, do you resize the window or just leave a mysterious blank space in the window ?
Now, what should I do? Build three identical dialogs and then make minor changes to each one? Then write all the glue code to shuffle between these three dialogs? Talk about a hassle! It's much better to make one dialog with all the necessary controls, and programatically hide the ones that don't apply for the current product.
It is easier to programatically disable the ones that don't apply. Furthermore, why not leave the controller code unchanged and just load a different nib based on what applies. It is certainly no harder to load a nib based on applicability than to hide controls in one nib based on the same criteria. Furthermore, each different nib can have its own layout, window size, etc. as desired. There is no need to have different controllers. Loading different nibs with the same controller is fine, and any fields that don't exist in a particular nib will be left unconnected as unconnected outlets in the controller.
Great! Did you consider a table ?
I had another program; it displays a dialog that, depending on the product that you owned, would show:
- a message and 'OK'
- a message, 1 checkbox, and 'OK'
- a message, 2 checkboxes, and 'OK'
- etc etc, up to 4 or 5 checkboxes.
How much text is involved in messages ?
Is there ever a scroll bar required ?
Do the labels for the check boxes ever change ?
<snip>
A) The user interface never changes from the point of view of the user, but hidden elements exist that enable a programmer to use the same code and interface combination for different applications.
I don't fundamentally object to hiding controls in this situation because it has no impact on users. However, hiding strikes me as a very poor substitute to just loading different nib files. The hiding technique seems like a throwback to "resource" based GUI descriptions that were/are very hard to create well and very inflexible to use. I still claim that loading different nibs but using the same controller "glue" code is actually less work that hiding some controls [unless of course the controls are going to be unhidden at some point in the execution of the application... see B)]
B) Based on the state of the application, controls are hidden or unhidden without the use of a standard user controlled metaphor. This might include expert mode vs. novice mode, context dependent options, etc.
I strongly advise against this for all of the reasons perviously stated. How is the user ever going to discover the options available if they are hidden and the user does not control how they become unhidden in a standard way ? For example, a discloser triangle signals a user that more information is available. A tab view invites users to view what is on each tab. The user controls what is seen, and that is good. A check box that suddenly appears because text was entered in a different field will surprise users. Why not leave the check box visible but disabled until text is entered ? The disabled check box could even have a tool tip telling the user when it will be enabled. Furthermore, if there is space for a hidden control, the user interface will look odd until the control appears... I like to know how my screen real estate is being used or wasted by applications.
_______________________________________________ Do not post admin requests to the list. They will be ignored. Cocoa-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/email@hidden
| References: | |
| >Re: Hiding a control on MacOS10.2 (From: Erik Buck <email@hidden>) | |
| >Re: Hiding a control on MacOS10.2 (From: John Stiles <email@hidden>) | |
| >Re: Hiding a control on MacOS10.2 (From: Erik Buck <email@hidden>) |
| Home | Archives | FAQ | Terms/Conditions | Contact | RSS | Lists | About |
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE
Contact Apple | Terms of Use | Privacy Policy
Copyright © 2007 Apple Inc. All rights reserved.