Итак, мне нужно отправлять данные в обратном направлении при появлении двух представлений. Я попытался использовать протокол, так что это часть моего кода:
RootViewController.h
#import <UIKit/UIKit.h>
#import "ThirdViewController.h"
@class SecondViewController;
@interface RootViewController : UIViewController <PassInt>
@property (strong, nonatomic) SecondViewController *secondViewController;
@property (strong, nonatomic) ThirdViewController *thirdViewController;
@property (nonatomic) int intNumber;
@end
RootViewController.m
#import "RootViewController.h"
#import "SecondViewController.h"
@implementation RootViewController
@synthesize secondViewController = _secondViewController;
@synthesize thirdViewController = _thirdViewController;
@synthesize intNumber = _intNumber;
- (void)setIntNumber:(int)number{
_intNumber = number;
}
#pragma mark - View lifecycle
- (void)viewWillAppear:(BOOL)animated {
if(!_thirdViewController){
_thirdViewController = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:[NSBundle mainBundle]];
}
if(!_secondViewController){
_secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:[NSBundle mainBundle]];
self.secondViewController.thirdViewController = self.thirdViewController;
}
[self.navigationController pushViewController:self.secondViewController animated:YES];
}
@end
SecondViewController.h
#import <UIKit/UIKit.h>
@class ThirdViewController;
@interface SecondViewController : UIViewController
@property (strong, nonatomic) ThirdViewController *thirdViewController;
@end
SecondViewController.m
#import "SecondViewController.h"
#import "ThirdViewController.h"
@implementation SecondViewController
@synthesize thirdViewController = _thirdViewController;
...
-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
[self.navigationController pushViewController:self.userPreferencesViewController animated:YES];
}
@end
ThirdViewController.h
#import <UIKit/UIKit.h>
@protocol PassInt <NSObject>
@required
- (void) setIntNumber:(int)number;
@end
@interface ThirdViewController : UIViewController{
id <PassInt> delegate;
}
@property (retain) id delegate;
- (IBAction)saveChanges;
@end
ThirdViewController.m
#import "ThirdViewController.h"
@implementation ThirdViewController
- (IBAction)saveChanges{
int someInt = 3;
[[self delegate] setIntNumber:someInt];
UINavigationController *tempNavigationController = self.navigationController;
[tempNavigationController popViewControllerAnimated:NO];
[tempNavigationController popViewControllerAnimated:NO];
}
...
@end
Буду признателен за любую помощь!