У меня есть два контроллера вида. MainViewController запускает SignUp ViewController. Как только контроллер SignUp View отклоняется, мне нужен доступ к тому же экземпляру MainViewController для обновления UIButton.title.iOS: Доступ к тому же экземпляру UIViewController, который называется Segue
.h MainView
//MainViewController.h
#import <UIKit/UIKit.h>
@interface MainViewController : UITableViewController
-(void)loggedIn;
@end
.m
@interface MainViewController()
@end
-(void)loggedIn
{
NSLog (@"This is Logged in inside MainView.m");
self.logInOutButton.title = @"Logout";
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UIViewController *destinationViewController = segue.destinationViewController;
Signup *signUp = [destinationViewController isKindOfClass:[SignUp class]] ? (Signup*)destinationViewController : nil;
signUp.mainViewController = self;
NSLog(@"Preapre For Segue %@", self);
}
.h SignUp
#import <UIKit/UIKit.h>
#import "MainViewController.h"
@interface SignUp : UIViewController
@property (strong, nonatomic) MainViewController *mainViewController;
@end
.m
@synthesize mainViewController;
- (void) loggedIn
{
NSLog(@" MainViewController %@", mainViewController);
[mainViewController loggedIn];
self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}
Когда я делаю NSLog Я получаю разные значения:
Preapre For Seg <STMainViewController: 0x9f7d600>
MainViewController (null)
Вы пробовали войти что SIGNUP View Controller после того как вы назначить mainViewController? Похоже, что между ними может быть промежуточный контроллер, скорее всего, контроллер навигации ... –
Проверьте, не является ли 'signUp'' nil' перед установкой свойства mainViewController. –
См. Обсуждение протоколов делегатов в разделе «Передача данных назад» в http://stackoverflow.com/a/9736559/1271826 – Rob