I have written a UITabBarController
subclass (called MainViewController
) and added a few instance variables, specifically a venue of type Venue. Each tab of the MainViewController
needs to access the venue variable of the MainViewController
. In the first tab, a UIViewController
subclass named HomeViewController
, I wrote my viewDidLoad
method and tried to output to NSLog with both...
NSLog(@"%@", self.parentViewController.venue.name);
and
NSLog(@"%@", self.tabBarController.venue.name);
But XCode gives the error
error: request for member 'venue' in something not a structure or union
I can access the venue property from within MainViewController
just fine so have ruled out an error there. The iPhone simulator does see both self.parentViewController
and self.tabBarController
as an instance of MainViewController
. The line...
NSLog(@"%@", self.tabBarController);
outputs...
2009-06-05 17:54:46.502 Venue[29729:20b] <MainViewController: 0x536600>
Since it's seen as a MainViewController
instance, I doubt using casting would help. Is my only other option to initialize the HomeViewController
with a copy of the venue or am I just doing something completely wrong with 'self.parentViewController.venue.name
'? Thanks, Rob
You're doing something completely wrong. parentViewController
is declared as a UIViewController
. NSLog
ing it outputs its real type due to the wonders of polymorphism.
UIViewController
doesn't have a Venue
member. Your MainViewController
does. Casting it is, in fact, the right answer. Make sure to import MainViewController.h
as well.
#import "MainViewController.h"
[...]
NSString *name = ((MainViewController *)self.parentViewController)).venue.name;
Also make sure, of course, that venue
is declared as a @property
of MainViewController, and name
is a @property
of Venue
.
int currentVCIndex = [self.navigationController.viewControllers indexOfObject:self.navigationController.topViewController];
//previous view controller
AccountViewController *account = (AccountViewController *)[self.navigationController.viewControllers objectAtIndex:currentVCIndex - 1];
account.property = object;
[account doSmthng];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With