Вы можете добиться этого, используя делегацию в Objective-C.
В вашем SecondView.h
оного следующий сразу после заголовка включения
@protocol YourDelegateName <NSObject>
-(void)setText:(NSString *)strData;
@end
добавить делегирует свойство в ваш заголовок для доступа к ним в вызывающем классе, как показано ниже (Это идет с другими свойствами декларации в SecondView.h
файле):
@property (nonatomic, weak) id<YourDelegateName> delegate;
Теперь придет делегирование делегата. Скажем, вы хотите сохранить текстовое значение UITextView
из SeconView
в strTextViewData
из FirstView
класса, когда происходит следующее событие:
- (IBAction)save:(id)sender
{
[self.delegate setText:self.txtView.text]; // Assuming txtView is name for UITextView object
}
Теперь, в FirstView.h
добавить YourDelegateName
в списке делегатов, как показано ниже:
@interface FisrtView : ViewController <YourDelegateName>
@property (nonatomic, reatin) NSString *strTextViewData;
@end
И затем в файле FisrtView.m
при создании экземпляра SecondView
класс, установите делегат на self
, как показано ниже:
SecondView *obj = [[SecondView alloc] initWithNibName:@"SeconView" bundle:nil];
obj.delegate = self; // THIS IS THE IMPORTANT PART. DON'T MISS THIS.
Теперь Реализуйте метод делегата:
-(void)setText:(NSString *)strData
{
self.strTextViewData = strData;
}
Применяя это к вашему коду будет делать то, что вы хотите. Кроме того, Делегирование является одной из важнейших особенностей языка Objective-C, которая - делая это - вы узнаете.
Дайте мне знать, если у вас возникнут какие-либо проблемы с этой реализацией.
Некоторое объяснение о Делегате было бы замечательным в ответе, так как этот ответ охватывал тему минимальным кодом. – viral
@richa Большое спасибо. Это объяснение действительно полезно, и делегаты - это правильная вещь, чтобы узнать для меня здесь. Когда я выполнил код, который вы дали, я получаю следующую ошибку. 'Thread 1: EXC_BAD_ACCESS (code = 2, address = 0x27c7ff4) ' Я абсолютно не понимаю, что это значит. Я пропустил что-то очевидное здесь? Благодаря! –
Единственное различие в моем коде и то, что вы дали, это то, что я создаю SecondView с помощью Storyboard следующим образом. 'UIStoryboard * story = [UIStoryboard storyboardWithName: @" Main "bundle: nil];' 'SecondView * sView = [story instantiateViewControllerWithIdentifier: @" SecondView "]; ' –