#ios #objective-c #delegates
#iOS #цель-c #делегаты
Вопрос:
Я видел здесь много подобных вопросов и ответов, но не смог найти решения своей проблемы. Я пытаюсь отправить данные с одного контроллера представления на другой и использовать делегирование. Но я не знаю, почему мой postDelegate не реагирует на селектор. Что-то не так с этим кодом или в чем проблема?
Файл PostViewController.h
@protocol GetDataDelegate <NSObject>
-(void)getPassedInfo:(NSString*)info;
@end
@interface PostViewController : UIViewController
@property (nonatomic, weak) id <GetDataDelegate> postDelegate;
@end;
Файл PostViewController.m
#import "PostViewController.h"
- (IBAction)postData:(id)sender {
if ([_postDelegate respondsToSelector:@selector(getPassedInfo:)]) {
[self.postDelegate getPassedInfo:@"data"];
NSLog(@"responds");
}
[self dismissViewControllerAnimated:YES completion:nil];
}
во втором файле view controllers .h
#import "PostViewController.h"
@interface MainViewController : UITableViewController <GetDataDelegate>
и в файле .m
@implementation MainWindowTableViewController
- (void)viewDidLoad
{
[super viewDidLoad];
PostViewController * postController = [[PostViewController alloc]init];
postController.postDelegate = self;
}
а вот и метод делегирования:
-(void)getPassedInfo:(NSString *)info{
NSLog(@"info is %@", info);
}
Комментарии:
1. Этот локальный файл будет уничтожен, когда второй viewDidLoad удалит его фрейм из стека.
Ответ №1:
Вам нужно создать postController
свойство или ivar. В настоящее время это локальная переменная в viewDidLoad
методе, которая будет освобождена после viewDidLoad
завершения, как сказал @CodaFi выше.
#import "PostViewController.h"
@interface MainViewController : UITableViewController <GetDataDelegate>
@property (nonatomic, strong) PostViewController *postController;
@end
Затем:
- (void)viewDidLoad
{
[super viewDidLoad];
self.postController = [[PostViewController alloc]init];
self.postController.postDelegate = self;
}
Комментарии:
1. Да, я пробовал так, но это не сработало … тот же результат.
2. @andrey Привет, есть какие-нибудь успехи в решении проблемы? У меня такая же проблема.