2014-09-07 2 views
0

В настоящее время у меня есть UITableViewController со статическими ячейками, который действует как форма для ввода пользователем. Существует одна ячейка с заданным количеством записей. Эти записи можно выбрать в другом UITableViewController, щелкнув по ячейке. Программно вы выбираете объект из класса «EventType». Этот объект должен быть перенаправлен на первый UITableViewController при выборе одной записи. Я могу назвать второй UITableViewController и уволить его по телефону:UITableViewController, используемый для выбора объекта

[self dismissViewControllerAnimated:YES completion:nil]; 

Моя проблема заключается в том, что я не знаю, как передать объект в первом UIViewController, а потом я хочу, чтобы обновить метку в ячейка со свойством объекта.

ответ

0

Как передать данные обратно?

Если мы хотим передать данные из 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

+0

Благодарим за подробное описание. Он отлично работал для меня. – Cocoa

+0

Приветствую вас, рад, что помог – Mutawe

Смежные вопросы