Как передать данные обратно?
Если мы хотим передать данные из SecondViewController в FirstViewController, нам необходимо использовать протоколы и делегаты. Для этого нам нужно будет сделать FirstViewController делегатом SecondViewController. Если мы это сделаем, это позволит SecondViewController отправить сообщение обратно в FirstViewController, что позволит нам отправить данные обратно.
Если FirstViewController должен быть делегатом SecondViewController, он должен соответствовать протоколу SecondViewController. Мы должны убедиться, что мы правильно укажем протокол. Это говорит FirstViewController, какие методы необходимо реализовать.
В SecondViewController.h, после всех заявлений #import, но до @interface линии, необходимо указать протокол, как указано ниже:
@class SecondViewController;
@protocol SecondViewControllerDelegate <NSObject>
- (void)addItemViewController:(SecondViewController *)controller didFinishEnteringItem:(NSString *)item;
@end
Далее, еще в SecondViewController.h, вам нужно установить свойство делегата и синтезировать в SecondViewController.m, как указано ниже:
@property (nonatomic, weak) id <SecondViewControllerDelegate> delegate;
в SecondViewController, мы называем сообщение о делегатом, когда мы выскочить контроллер представления.
NSString *itemToPassBack = @"This value is going back to FirstViewController";
[self.delegate addItemViewController:self didFinishEnteringItem:itemToPassBack];
Это все для SecondViewController. Теперь в FirstViewController.h скажите FirstViewController импортировать SecondViewController и соответствовать его протоколу.
#import "SecondViewController.h"
@interface FirstViewController : UIViewController <SecondViewControllerDelegate>
В FirstViewController.m, реализовать следующий метод из нашего протокола:
- (void)addItemViewController:(SecondViewController *)controller didFinishEnteringItem:(NSString *)item
{
NSLog(@"This was returned from SecondViewController %@",item);
}
Теперь все, что нам нужно сделать, это сказать, что SecondViewController FirstViewController является его представителем, прежде чем нажать SecondViewController к навигации стека , Добавить следующие изменения в FirstViewController.m:
SecondViewController *secondViewController = [[SecondViewController alloc] initWithNib:@"SecondViewController" bundle:nil];
secondViewController.delegate = self
[[self navigationController] pushViewController:secondViewController animated:YES];
И все! Теперь вы настроены на отправку данных из SecondViewController в FirstViewController.
The source
Благодарим за подробное описание. Он отлично работал для меня. – Cocoa
Приветствую вас, рад, что помог – Mutawe