Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone Programming - Passing NSMutableArray between view controllers

I have a RootViewController and a DetailViewController where I am trying to pass a NSMutableArray from the rootView to the detailView. I have created an object of the RootViewController inside the DetailViewController and accessing it like the following

RootViewController *root = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];

detailViewArray = [root.rootViewArray copy];

Note: Both the arrays are declared in the .h files; synthesized and then allocated and initialized array = [[NSMutableArray alloc] init];

Problem: I am not too sure why it still doesn't work. I have tried a lot of the solutions on the internet but it didn't quite work for me. The property for the root array is nonatomic, retain Is it something wrong with that? Do I need to change it to something or the method I am following is just not right.. Please if someone could help!

like image 531
subodhbahl Avatar asked Aug 31 '26 14:08

subodhbahl


1 Answers

If you alloc/init the RootViewController inside the DetailViewController, you are creating another instance of the RootViewController. You are not getting the same instance (with data) of the rootViewController.

That said, even passing a reference of a viewController to another viewController to then poke at it's data is sort of bad. It creates tight coupling between the views.

Instead, if you need to get data, consider using a delegate to communicate between the views.

What exactly does delegate do in xcode ios project?

Tutorial:

http://www.theappcodeblog.com/2011/04/15/passing-data-between-views-tutorial-using-a-protocol-delegate-in-your-iphone-app/

Another option is to create a shared model (read up on model view controller patterns). It's typical in that pattern to create a model and share data by getting a singleton instance of your model:

MyModel *model = [MyModel sharedInstance];

Then, each view can set and read data from that same (singleton) instance of the model.

Which to choose? The model is better if many views share the same data. A delegate is appropriate for a couple views to communicate with each via callbacks.

like image 52
bryanmac Avatar answered Sep 03 '26 02:09

bryanmac



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!