I'm developing an iOS app and now I'm at a loss. I'm trying to pass data from the first View Controller to the first tab of a TabBarViewController (with using the storyboard). I found a lot of tutorials that explain how to pass data between view controllers, but nothing worked with my tab bar. I know that the tab bar controller contains a kind of array of views. The relation between the View Controller and the Tab Bar Controller is realized using a segue (push). So, I thought it is easy to use the prepareForSegue() - method. Like that:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([[segue identifier] isEqualToString:@"tab"]) {
// ...
}
}
Unfortunately, the relation between the Tab Bar Controller and each tab bar view is no real segue. It's only a "relationship". That means, there is no segue identifier I am able to use for the the method above-mentioned. Is there a possibility to use the prepareForSegue in this case? If not, any ideas how to solve this problem? I know that there is a similar question, but the answer wasn't that helpful. Do I have to create a new file for every tab (view) within the tab bar controller? Or is it possible to have one class (m. & h.) for the whole tab bar controller, accessing the several view with objectAtIndex()?
Thanks in advance!
If your hierarchy is Viewcontroller->UItabbarcontroller->ViewCOntroller
in my case i have to send data to marketviewcontroller . In tabcontroller, marketviewcontroller is present at index 0.
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"tab"])
{
UITabBarController *tabar=segue.destinationViewController;
MarketViewController *marketViewcontroller=[tabar.viewControllers objectAtIndex:0];
// pass data to market view controller
[marketViewcontroller passobject:Yourdata];
// or
marketViewcontroller.value=Yourdata
}
}
in MarketViewController.h
@property(nonatomic,retain) NSString * value;