how to get a reference to some view controller in my app?, I do not need a new copy of the view controller I just need a reference to that controller so I can use its methods and update its properties.
thanks
how to get a reference to some view controller in my app?, I do not need a new copy of the view controller I just need a reference to that controller so I can use its methods and update its properties.
thanks
Is there a parent-child relationship between the two?
If so, you might do something like
@interface ChildVC : UIViewController
@property (nonatomic, assign) ParentVC *parent;
@end
and in the ParentVC
:
- (void)methodThatShowsOrCreatesChildVC
{
// ...
ChildVC *childVC = [[ChildVC alloc] init];
childVC.parent = self;
// ...
}
In the ChildVC
:
- (void)methodThatChangesSomethingOnParent
{
[[self parent] changeSomethingOnParent:something];
}
If there is not a parent-child relationship, this sounds like unnecessary coupling. Rather than that, you could try:
NSNotification
about changes madeNSObject
-based class that contains the shared "concerns".It depends on your implementation, if the viewController is visible or is in the memory, you can access it in an other class, by creating a property and then accessing its attributes (properties, methods).
When you push a new view controller with
performSegueWithIdentifier:
you'll get the delegate method
prepareForSegue:
Which passes a UIStoryBoardSegue
that has properties destinationViewController
and sourceViewController
and from this answer:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"segueName"])
{
YourViewController *vc = [segue destinationViewController];
// Pass any objects to the view controller here, like...
[vc setMyObjectHere:object];
}
}
If you are using a UINavigationController
, you can do this to get the View Controller
at any index
UIViewController *targetViewController = [self.navigationController.viewControllers objectAtIndex:([self.navigationController.viewControllers count]-1)];