Вопрос относительно передачи данных делегату в iOS - PullRequest
0 голосов
/ 07 сентября 2010

Итак, у меня есть просмотр таблицы в качестве корневого экрана и кнопка добавления, которая представляет новый экран с датчиком выбора.Когда я представляю новый вид, я устанавливаю корневой экран для делегирования.

Теперь мне нужно передать данные с экрана uidatepicker обратно его делегату, но я не могу вспомнить, как это должно было работать ...

Я знаю, что должен бытьвозможность вызывать метод, который существует на корневом экране, из нового представления DatePicker, но, опять же, я не могу вспомнить синтаксис.

Я знаю, что делал это раньше, но я уже давноиспользовал какао, и я просто пытаюсь вспомнить.

Спасибо за вашу помощь !!

1 Ответ

0 голосов
/ 07 сентября 2010

Этого должно быть достаточно для обновления памяти.

MyDatePickerViewController.h:

@protocol MyDatePickerViewControllerDelegate;

@interface MyDatePickerViewController;

MyDatePickerViewController : UIViewController
{
    id<MyDatePickerViewControllerDelegate> delegate;

    NSDate* selectedDate;
}

@property (nonatomic, assign) id<MyDatePickerViewControllerDelegate> delegate;
@property (nonatomic, retain) NSDate* selectedDate;

@end

@protocol MyDatePickerViewControllerDelegate
- (void)myDatePickerViewControllerDidFinish:(MyDatePickerViewController*)myDatePickerViewController;
@end

MyDatePickerViewController.m:

@implementation MyDatePickerViewController

@synthesize delegate;
@synthesize selectedDate;


- (void)dealloc
{
    [selectedDate release];
    [super dealloc];
}

- (void)someMethodCalledWhenUserIsDonePickingDate
{
    [delegate myDatePickerViewControllerDidFinish:self];
}

MyRootViewController.h:

#import MyDatePickerViewController

@interface MyRootViewController : UIViewController <MyDatePickerViewControllerDelegate>
{
    ...
}

@end

MyRootViewController.m:

@implementation MyRootViewController

- (void)myDatePickerViewControllerDidFinish:(MyDatePickerViewController*)myDatePickerViewController
{
    NSDate* date = myDatePickerViewController.selectedDate
    // Do something with the date that was chosen
}

@end
...