Multi layer table view/navigation controller hierarchy best practice

Hi,
I am new to iPad/iPhone development and wondering what the best practice for multiple layers of table views is? I understand the principle of a navigation controller providing the framework for moving up and down a list but have not yet quite got my head around if you should have one navigation controller for the whole tree or several navigation controllers.
In my app I need to have the following:
Main view -> window view showing some interactive elements (picker, buttons etc.)
Setup view -> Hierarchy managed by nav controller/table views
The setup view needs to manage the following hierarchy...
- Level A:
- Global app variables (one table view)
- Level B Items (table view showing list of items at belonging to Level B)
- Level B Item 1 (table view showing list of items at level C belonging to level B item 1)
- Level C Item 1 (table view showing list of items at level D belonging to level C item 1)
- Level D Item 1 (table view showing list of items at level E belonging to level D item 1)
- Level E item (table view for properties of item at Level E)
- Level D Item n
- Level C Item n
- Level B Item n
Each level in this has some properties and then a list of child items.
What would be the best way of structuring this? I would assume that creating a class that extends a view controller for each level is a given but what about the control of the navigation? Should this be handled by one navigation controller or one per level? I think I know the right answer but have not seen a neat way of implementing
I think I am also best off having each level in it's own xib but, once again, am not 100% sure that this is the best design pattern.
Many thanks in advance for any help/pointers!
Cheers
jez

Hi Julian,
I have struggled with the same questions you are addressing. On a previous project we tried to model based on packages, but during the course of the project we encountered some problems that grew overtime. The main problems were:
1. It is hard to enforce rules on package assignments
2. With multiple developers on the project and limited time we didn't have time to review package assignment
3. Devopelers would click away warnings that an object was already part of another project and just continue
4. After go-live the maintenance partner didn't care.
So, my experience is is that it is a nice feature, but only from a high level design point of view. In real life it will get messy and above all, it doesn't add much value to the development. On my neew assignment we are just working with packages based on functional area and that works just fine.
Roy

Similar Messages

  • Multi-org Tables & Views in R12

    We r in the process of upgrading Oracle Applications from 11i to R12. Now my question is
    1. What about the Multi Org related tables once we get upgraded to R12 since the Multi Org choice is provided at the form level itself in R12.
    2. Do the views related to Multi Org still exists in R12. If yes then what is purpose of the same.
    Thanks in advance
    Regards
    -Mahesh

    Anybody who hav Noticed the differences in Multi Org tables and Views in Database Level b/w ii1 and R12 plz answer this.
    Regards
    -Mahesh

  • Table View Navigation

    I've a table view with one column being an image (clickable). I have 40 rows of records (say for example) and I display 15 at a time in my table view.
    When I navigate to page 3 of my tableview (for example) and click on row to edit (lineedit mode) my view page stays put on page 3 of table view (that's the way it should be). However, after row selection, when I click on my image (which generates a server event and I do my stuff) it goes back to the 1st page of the tableview. The point to note that it does keep the rowselection (on the 3rd page) and changes the icon image as it suppose to but somehow it navigates to the 1st page every time.
    Is there a way to control the navigation?
    Thanks,
    Partho

    I've added
    runtime->keep_context = 1. in my do_handle_event
    and also added
    keepSelectedRow       = "TRUE" in my htmlb:tableview
    but still it navigates to the 1st page.
    It is this section in the render cell iterator
        IF p_edit_mode IS INITIAL.
        ELSE.
           img->onclick = 'image_click'.
        ENDIF.
    which fires the server event and always goes back to the 1st page.
    Please help.
    Thanks,
    Partho

  • Auto-Anchor Controller's Best Practice

    Hi All,
    I got confused with this setup. I have 2 Wlc's.One is the internal controller and another one configured for the anchor controller (different subnet-DMZ zone) for guest traffic. Where do i configure DHCP assignment for this users..? Should Production controller intervine in this dhcp process or shall i direct to Anchor to take care of everything..? which is recommended ?
    And also any best practice doc is available for this ..?
    Please help...
    thanks in advance.

    Prasan,
    Just keep in mind that there are best practices that are published and best practices that you learn from experience. Being a consultant, I get to implement wireless in various networks and everyone's network is quite different. Also code versions can change a best practice because of bug issues or how a standard might of changed and how that standard was implemented in code. The biggest best practice secret is really working with various client devices, scanner's, laptops, smartphones, etc., and seeing how those change because of newer models and it firmware updates. It's amazing to understand how some devices will require a few checkboxes in the WLAN to be disabled compared to others. Even with anchoring for guest and using a custom WebAuth to make sure the splash page works with various types of browsers.
    What I can say is to always try the defaults if possible when you have issues and then enable things one by one.
    Sent from Cisco Technical Support iPhone App

  • DRM Alternate Hierarchy Best Practice

    What procedures and best practices are suggested for implementing Alternate Hierarchies for DRM reporting purposes?
    Thank You.

    In two ways you can set up alternate hierarchy in DRM
    1) Across the hierarchies but within same version (Linked Nodes)
    2) Within the hierarchy (Shared Nodes)
    Insert and AddInsert actions in DRM will let you to create shared hierarchies either within Hierarchy or across hierarchies.
    If you are creating shared hierarchies across the hierarchies you don't see suffixes such as ":Shared-001" at the end of node but if you are using Insert within the hierarchy then you will suffixes, to have second one implemented first you need turn on one system preferences "SharedNodeMaitainanceEnabled".

  • Set a JS client script for a table view navigation event

    Friends:
    I need to run a JS script,when the navigation buttons
    of a tableview are clicked.
    Even if I override the FooterRenderer, how can I set the
    client JS function name ?
    Thank you very much for your suggestions,
    Prasad Nutalapati

    I've added
    runtime->keep_context = 1. in my do_handle_event
    and also added
    keepSelectedRow       = "TRUE" in my htmlb:tableview
    but still it navigates to the 1st page.
    It is this section in the render cell iterator
        IF p_edit_mode IS INITIAL.
        ELSE.
           img->onclick = 'image_click'.
        ENDIF.
    which fires the server event and always goes back to the 1st page.
    Please help.
    Thanks,
    Partho

  • Securing with NAT - Best Practice ?

    Hi,
    It is forbidden to do NAT Exempt from Internal to DMZ ?
    I hear there is a compliance in banking that 2 server who needs to communicate but its forbidden to know each other ip address ?
    How about NAT as second layer or firewall ?
    What is best practice to secure enterprise network from NAT point of view ?
    Thx

    Hello Ibrahim,
    No, not at all, that is not a restriction at all. You can do it if needed.
    Now looks like in your enviroment is a requirement that this 2 servers communicate with each other but they will not know each other IP address.
    Then NAT is your friend as will satisfy the requirement you are looking for.
    Well I do not consider NAT to be a security measure as for me it does not perform any inspection, any rule set any policy ,etc but I can ensure you there are a lot of people that think about it as a security measure.
    I see it as an IP service that allows us to preserve the IP address space.
    For more information about Core and Security Networking follow my website at http://laguiadelnetworking.com
    Any question contact me at [email protected]
    Cheers,
    Julio Carvajal Segura

  • Logical architecture+best practice

    Hi,
    what does these mean for you regading Oracle applications :
    1-logical architecture
    2-best practice
    Regards.

    1-logical architecture -> I assume the technical architecture for deployment of Oracle Applications (Single node, multi node, HA, DMZ configuration etc)
    2-best practice -> Best Practices in each function within maintaining and implementing Oracle Applications.. like best practice for Upgrades, Coning Patching etc
    Sam
    http://www.appsdbablog.com

  • WLC Best Practice - split LAG?

    Hi
    Reading "Wireless LAN Controller Configuration Best Practices" document from Cisco I see this:
    "Do not configure a LAG connection that spans across multiple switches. When you use LAG, it must be with all ports that belong to the same EtherChannel that goes to the same physical switch."
    My question: Is it considered good or bad design to split the WLC LAG across multiple physical switches also when using virtual switches like VSS in 6500? Or to connect the LAG to different 3750 stack-members in the same stack?
    Br Jimmy

    As leolaohoo wrote, a 3750 stack or 6500 VSS are considered as  one logical switch, and you will not have any problem connect a LAG to  diffrent switches within the stack or VSS.

  • Handling Error queue and Resolving issues - Best practices

    This is related to Oracle 11g R2 streams replication.
    I have a table A in Source and Table B in destination. During the replication by Oracle streams, if there is an error at apply process, the LCR record will go to error queue table.
    Please share the best practices on the following:
    1. Maintaining error table operation,
    2. monitor the errors in such a way that other LCRs are not affected,
    3. Reapply the resolved LCRs from error queue back to Table B, and
    4. Retain the synchronization without degrading the performance of streams
    Please share some real time insight into the error queue handling mechanism.
    Appreciate your help in advance.

    This is related to Oracle 11g R2 streams replication.
    I have a table A in Source and Table B in destination. During the replication by Oracle streams, if there is an error at apply process, the LCR record will go to error queue table.
    Please share the best practices on the following:
    1. Maintaining error table operation,
    2. monitor the errors in such a way that other LCRs are not affected,
    3. Reapply the resolved LCRs from error queue back to Table B, and
    4. Retain the synchronization without degrading the performance of streams
    Please share some real time insight into the error queue handling mechanism.
    Appreciate your help in advance.

  • Best way to pass back data from hierarchical table view?

    Hi,
    I have a view hierarchy using a navigation controller that's working pretty well. One of the bottom level views is a table view where the user selects an item from the list. This bottom view checks the list item, saves the selected item in a property, and then pops the view off the stack.
    What's the best way to alert the parent view that the child view has been popped off so it can retrieve the value in the property? The calling push returns immediately, so it doesn't appear to be a modal call. I want to be able to use the same controller from other parent forms, so I need to be able to do this without referencing the parent in the child form ideally.
    Thanks
    Ray

    Hi, well let me try to explain it a bit more
    - Add a "delegate" property to your child-viewcontroller-class
    - Define a protocoll within each chil-viewController-class
    In this example let us name it "didSelectValue:(NSString *)value"
    - In the parent-viewcontroller before pushing a child-viewcontroller set it's delegate property to "self" (parent-viewcontroller)
    - In the parent-viewcontroller implement to protocoll-method "didSelectValue:(NSTring *)value"
    - In the child view-controller in (assuming it is a tableViewcontroller) add some code in didSelectRowAtIndexPath that checks if the delegate is set and check if it responds to selector "didSelectValue:(NSString *)value". If so, call it with the selected value.

  • View/Controller best practices

    Hello,
    A coworker and I are in charge of creating the standards for Web Dynpro development at our company.  We've been able to agree on most topics, but we're stuck on one issue.  Should ALL logic be in the controller or is it ok to perform some logic in the views?
    My coworker makes some valid points - we work in a team environment and you can't have two people working on the controller at the same time, if all your logic is in there, it's practically impossible for a group of developers to work on the same application.  In addition, there's often logic that's only applicable to a certain view.  He doesn't like the idea of a controller cluttered with logic from all the views, and doesn't see why we need to add an extra layer to execute something.  For instance, of a model is needed only for one view (say, to look up fields for a dropdown that only exists on that view), why have yet another executeSomeRFC method in the controller when we can do it in the view?
    My opinion is that Web Dynpro follows the MVC paradigm, and therefore all logic should be in the controller.  While it's true that right now a certain model or a certain piece of logic might only be needed for the one view, you never know if it will be needed somewhere else later.  In addition, to make the statement that "logic that's only needed for one view can be done in that view" leaves it open for a lot of interpretation and I think developers can start sneaking more and more code into the view because they think it's easier, when that is not what the view was created for. The exceptions, for me is logic that specifically has to do with the UI - for instance, if you select this checkbox, it will make 4 fields on the table disabled and change the label text of another field.
    We both see the other person's point of view and we can't decide where to move from here.  We're open to the opinions of other Web Dynpro experts.  What do you guys think?
    Thanks,
    Jennifer

    We have had the same discussion at my Company and came to the following conclusion and coding standard. It is preferable to keep all backend model call logic in the Component Controller, for various reasons if you ever drop a view or goto using some other type of UI interface  e.g. PDAs, with the same controller you already have the functionality there in the controller coded and tested.
    What I have seen happen before we adapted this standard with consultants  or less experienced developerrs is that they tend to copy and paste the same functionality from view to new view creating a maintenance headache down the road, even duplicating the code as they can not find the functionality or are too lazy to look for it then try coding their own. It is for this reason our company adapted the best practice of creating all backend call logic even if it is only required by a single view Dynpro View, in the component controller and calling it from the view as <b> wdThis.wdGet.doXXXFunction();</b>
    Also this helps code maintainers and new team members as they know all backend call logic is in the controller. I believe you will also find this practice recommended in the SAP Press WebDynpro Java books.
    Alex

  • Complete table view controller with XML

    Hello, I'm from Brazil and am new to ios.
    Today I am making an example where I use a table view controller and fill it witharray (NSMutableArray).
    However I would do the same using XML so that now, I'm having so many difficulties to the point of not knowing where to start.
    The code I use to populate this array was.
    It is possible to use something like XML?
    #pragma mark - View lifecycle
    - (void)viewDidLoad
        [super viewDidLoad];
        // Uncomment the following line to preserve selection between presentations.
        // self.clearsSelectionOnViewWillAppear = NO;
        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        // self.navigationItem.rightBarButtonItem = self.editButtonItem;
        registros = [NSMutableArray arrayWithObjects:@"1", @"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14", nil];
    - (void)viewDidUnload
        [super viewDidUnload];
        // Release any retained subviews of the main view.
        // e.g. self.myOutlet = nil;
    - (void)viewWillAppear:(BOOL)animated
        [super viewWillAppear:animated];
    - (void)viewDidAppear:(BOOL)animated
        [super viewDidAppear:animated];
    - (void)viewWillDisappear:(BOOL)animated
        [super viewWillDisappear:animated];
    - (void)viewDidDisappear:(BOOL)animated
        [super viewDidDisappear:animated];
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
        // Return YES for supported orientations
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    #pragma mark - Table view data source
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
        // Return the number of sections.
        return 1;
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
        // Return the number of rows in the section.
        return [registros count];
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
        static NSString *CellIdentifier = @"listax";//este é o identificador da celula
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        cell.textLabel.text = [registros objectAtIndex:indexPath.row];
        return cell;

    If you have a custom XML schema (not a plist), consider two approaches.
    1. Before showing your table view, use NSXMLParserto deserialize the XML document into an NSMutableArray that will be the table view data source.  Typically the array contains custom class instances; one or more class properties are used to set table cell properties in cellForRowAtIndexPath.  If you have never worked with NSXMLParser (or any other SAX parser) before, start by creating a sample app so you understand how that works.
    2. Use a 3rd-party DOM parser like GDataXML.  Load your XML document into a class property in your table view's viewDidLoad.  Then the XML document will be the table view data source since elements and attributes can be directly queried using XPath in cellForRowAtIndexPath.  If you have never worked with XML DOM and XPath before, start by creating a sample app so you understand how that works.
    If your have a lengthy complex XML document, option #1 might be more efficient because indexed array access is faster than XPath queries.  Theoretically that is why Apple's Cocoa provides DOM support on OS X but not iOS.  There are strategies to improve efficiency if necessary, including your own indexing scheme.  The best solution depends on many factors.  For example, if your XML document includes thousands of rows, but users rarely scroll past the first 10, option #1 would waste time parsing everything.
    Both of these approaches keep all data in memory, which is fast but not friendly.  Perfectly fine for reasonably sized data sets.

  • Problem responding to view being popped from navigation controller

    I have a detail view controller which is pushed onto the application's navigation controller stack by a given parent controller. The user is able to select table values in the detail controller, which should update the parent controller when, and only when, the detail view is popped and the parent view is made visible again.
    Is there a way to do this? I couldn't see any appropriate methods in UIViewController which would be called when the child view is popped. I've tried to make the parent controller conform the UINavigationControllerDelegate protocol and provided an implementation for willShowViewController method, but this method doesn't seem to get called when the view is displayed.
    I'm not sure if I'm going about it the right way trying to implement the UINavigationControllerDelegate and there is a bug with my implementation, or there are better ways to go to implement this functionality, such as using a modal controller, etc.

    m_userName wrote:
    The user is able to select table values in the detail controller, which should update the parent controller when, and only when, the detail view is popped and the parent view is made visible again.
    I don't understand why you require the update to be made only when the detail controller is popped, since during the time the detail controller is on top of the stack, the controller underneath isn't visible. It's common practice to pass data to the previous controller any time before the top controller is popped. Note that there's only a short interval between the time the top controller is removed from the stack and the time it's deallocated (unless you've retained that controller elsewhere, which should be avoided for best memory management).
    That said, [viewDidDisappear:|http://developer.apple.com/library/ios/documentation/UIKit/R eference/UIViewControllerClass/Reference/Reference.html#//appleref/doc/uid/TP40006926-CH3-SW20] is called during that interval, so I think it would be a good choice for the requirement you described:
    - (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    if (self.navigationController == nil) {
    NSLog(@"%s: *POPPED* level=%d", _func_, level);
    // pass the data here
    The test for a nil navigationController pointer tells us whether the controller is actually off the stack when viewDidDisappear: runs. This is useful in case an instance of this controller class ever pushes another controller on top of it, since viewDidDisappear: will run in that situation as well. But in that case the controller doing the pushing remains on the stack, so its navigationController property won't be nil. If that property is nil when viewDidDisappear: runs, we know self has just been popped.
    You can also find the above example in [Problem with text in detailTextLabel of UITableViewCell |http://discussions.apple.com/message.jspa?messageID=12495708#12495708], so if you build the code in that thread you can see how things work together.
    - Ray

  • Best Practice : how 2 fetch tables, views, ... names and schema

    hi,
    I am looking for the best practice about getting the catalog of a database.
    I have seen that I can make some select in system-tables(or views) such as DBA_TABLES and DBA_VIEWS, or DBA_CATALOG, but is that the best way to grab thses informations ?
    (I ask this question because It seems a strange way to me to get the table names using a simple select, but getting column info using a specialized function, OCIDescribeAny(). this does not look like a coherent API...)
    thanks for your advice
    cd

    in the same idea, why use OCIDescribeAny instead of doing an appropriate select in DBA_TAB_COLUMNS ?
    cd

Maybe you are looking for

  • Search and Replace text in file using PowerShell

    I want to schedule a script in PowerShell to search a directory for an XML file for a particular text string and replace it with a different text string and then save the file with the same name, the name of the file will change each time the script

  • Solaris Content Crawler

    All, Is there any Crawler for crawling files from Solaris File System, similar to Windows Crawler? I know we can develop one, but just wanted to check if there is one available already. Thanks, Bharat

  • Last 12 Rolls Not Displaying Correctly

    For some reason when I click the "The Last 12 Rolls" option in the Source Pane iPhoto displays my last 6 rolls properly 12/22/08, 12/20, 12/18, 12/18, 12/13, 12/13 and then skips several month's worth of rolls and displays 9/6, 9/1, 8/28, 8/26, 8/15,

  • N500 4233 NOTEBOOK no wifi after reinstalli​ng vista

    Today morning i've format my system and reinstall windows vista on my N500 notebook, after trying windows 7 (it was too slow so...) but now i can't get my WIFI work! tried everything from drivers to power managment, the switch in the front, the BIOS

  • W 2000 & FF 3.6.1 will not play code bgsound src="AmazingGraceLV.mp3" loop="-1"

    Windows 2000 on my desktop & Firefox 3.6.0 I have the following code on a web page. The file plays on my Laptop with XP and the latest Internet Explorer, but not on the W 2000 machine. I tried to download the plug in I found, but it's only for XP and