OK… I’m developing an iPad app with using a split view. My detail view contains a map with markers on it and the root view is a table view.
My data is split up into 4 arrays, and I need to be able to toggle between displaying these 4 arrays with a button. The markers displayed on the map and the data in the table view need to both change to display only the array chosen. This is easy on the map side of things since the NIB for the detail view file allows me to easily add buttons and execute functions from them. But… That doesn’t help me for the table data in my root view controller, especially since the root view is, well, the root view, and is above the detail view. It’s easy to pass functions from the root view to the detail view, but not vice versa, plus that seems to be the “wrong” way to do things.
I imagine that I might need a custom object to contain a variable to let the program know which array to display. That doesn’t seem too difficult, but… If that’s the case, it seems like I need to create some kind of delegate to cue a function in the root and detail view every time the variable inside my custom object is changed. Does anyone have any ideas how I might be able to do this?
Basically, I need a kind of “global variable” that can be changed with the press of a button and will cue functions in both views every time the variable changes. The trick is that this button is in a subview.
This is my first question on StackOverflow so I apologize if it’s poorly written or if I’ve left out too many details… Please let me know if there are any questions. I could really, really use the help because I’m quite stuck. Thank you everyone! This site and all of you people have been wonderfully useful in my development thusfar.
I think you should still spend some time thinking about your user experience, because this may be an indicator that something is not right. But, if this is the way your app should work, I would suggest keeping your “global” variable inside your App Delegate. If your root table view is using a property on your App Delegate as it’s datasource, then a simple [self.tableView reloadData] will reload the tableview with the new data, and it sounds like you already have a refresh method for your map view.
The next step is to trigger the event, for that you should create your own delegate that both your root tableview controller and you detail map view controller will need to implement.
Then, whenever you change the data in your app delegate you just call the delegate function and each view controller will be able to respond accordingly.