objective c - Passing data from view controller to tab bar controller in iOS -


i'm developing ios app , i'm @ loss. i'm trying pass data first view controller first tab of tabbarviewcontroller (with using storyboard). found lot of tutorials explain how pass data between view controllers, nothing worked tab bar. know tab bar controller contains kind of array of views. relation between view controller , tab bar controller realized using segue (push). so, thought easy use prepareforsegue() - method. that:

 - (void)prepareforsegue:(uistoryboardsegue *)segue sender:(id)sender{  if ([[segue identifier] isequaltostring:@"tab"]) {   // ...      }   }   

unfortunately, relation between tab bar controller , each tab bar view no real segue. it's "relationship". means, there no segue identifier able use the method above-mentioned. there possibility use prepareforsegue in case? if not, ideas how solve problem? know there similar question, answer wasn't helpful. have create new file every tab (view) within tab bar controller? or possible have 1 class (m. & h.) whole tab bar controller, accessing several view objectatindex()?

thanks in advance!

here's setup worked:

  1. setup segue:
    1. setup view controller segue tab bar controller 2 child view controllers in storyboard
    2. specify segue identifier (tab)
  2. setup classes in storyboard:
    1. view controller class = viewcontroller
    2. tab bar controller class = tabbarcontroller
    3. tab bar controller child view controller class = tabsviewcontroller (shared between both)
  3. setup labelstring property in tab bar controller:

    1. in tabbarcontroller.h:

      @property (nonatomic, strong) nsstring *labelstring; 
    2. in tabbarcontroller.m:

      @synthesize labelstring; 
  4. setup prepareforsegue method in viewcontroller.m:

    #import "tabbarcontroller.h"  ...  -(void)prepareforsegue:(uistoryboardsegue *)segue sender:(id)sender{     if ([[segue identifier] isequaltostring:@"tab"]){         tabbarcontroller *tabbar = [segue destinationviewcontroller];         [tabbar setlabelstring:[nsstring stringwithformat:@"this has been set"]];     } } 
  5. setup uilabels child tab bar view controllers.

    1. drag default uilabel controls both child view controllers
    2. create property in tabsviewcontroller.h:

      @property (nonatomic, strong) iboutlet uilabel *label; 
    3. hook 5.1 , 5.2 in storyboard

  6. setup viewdidload method in tabsviewcontroller.m:

    #import "tabbarcontroller.h"  ...  @synthesize label;  ...  - (void)viewdidload {     [super viewdidload];      tabbarcontroller *tabbar = (tabbarcontroller *)self.tabbarcontroller;     label.text = [nsstring stringwithformat:@"tab %i: %@",[tabbar.viewcontrollers indexofobject:self],tabbar.labelstring]; } 

now clicking on 1st , 2nd tabs have labels display tab 0: has been set , tab 1: has been set, respectively.


Comments