В принципе, теперь я намерен использовать делегат для передачи значений между контроллерами представлений.Как передать значения между контроллерами множественного представления, используя делегат/протокол
Поток контроллеров зрения А -> В -> С
Когда пользователь делает какое-либо действие в представлении контроллера «C», как передать значение обратно в первый контроллер представления, которое является «А»?
В моем собственном коде метод делегата никогда не запускается, а «self.delegate» всегда «null». Я не уверен, почему и как решить эту проблему.
Ниже приведен код первых ОК и третьего ВК:
#import "ViewController.h"
#import "ThirdViewController.h"
@interface ViewController()<PassValueProtocal>
@property (weak, nonatomic) IBOutlet UILabel *myLabel;
@end
@implementation ViewController
{
ThirdViewController *thirdVC;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void) passValueBack:(NSString *)value
{
NSLog(@"HAHAH");
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)segueToSecondVC:(UIButton *)sender
{
thirdVC = [ThirdViewController sharedManager];
thirdVC.delegate = self;
}
@end
#import "ThirdViewController.h"
@interface ThirdViewController()
@property (weak, nonatomic) IBOutlet UITextField *myTextField;
@end
@implementation ThirdViewController
+ (id) sharedManager
{
NSLog(@"myDelegate sharedManager");
static ThirdViewController *sharedManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{ sharedManager = [[self alloc] init]; });
return sharedManager;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)passValueAction:(UIButton *)sender
{
NSLog(@"%@", self.delegate);
if ([self.delegate respondsToSelector:@selector(passValueBack:)])
{
[self.delegate passValueBack:self.myTextField.text];
}
}
Посмотрите на http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers?rq=1 – JaredH
вы считаете ли используя разматывать segues? – Yariv