проблема с объявлением делегата - PullRequest
0 голосов
/ 02 марта 2012

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

.h file

@protocol addEventDelegate <NSObject>

-(void) setAddedEventFlag:(BOOL) hasAddedEvent;

@end

@interface AddEventViewController : UIViewController <UITextFieldDelegate, UITextViewDelegate, UIPickerViewDelegate, UIPickerViewDelegate>

@property (weak, nonatomic) id delegate;  //changed from strong to weak

я тогда @synthesize делегат в файле .m

когда пытаюсь включить addEventDelegate для первого контроллера представления, xcode не может найтиэто:

.h file

#import "AddEventViewController.h"

@interface FieldReportViewController : UIViewController <UITextFieldDelegate, 
UITextViewDelegate, UIPickerViewDelegate, UIPickerViewDelegate, addEventDelegate>

я получаю сообщение об ошибке: «Не удается найти объявление протокола для« addEventDelegate »».

что не так?

РЕДАКТИРОВАТЬ:

enter image description here

// код

enter image description here

ОШИБКИ:

enter image description here

Ответы [ 4 ]

0 голосов
/ 22 сентября 2015

Вы можете импортировать addEventDelegate в FieldReportViewController.m файл

@interface FieldReportViewController ()<AddEventDelegate>
@end

Этот работает в моем приложении

0 голосов
/ 02 марта 2012

Вот правильный способ определения протокола

@protocol addEventDelegate; // forward declaration for delegate property

@interface AddEventViewController : UIViewController <UITextFieldDelegate, UITextViewDelegate, UIPickerViewDelegate, UIPickerViewDelegate>
{
    id <addEventDelegate> *delegate
}

@property (weak, nonatomic) id <addEventDelegate> *delegate; 

@end // interface

@protocol addEventDelegate <NSObject>
// @optional // if you want to make it optional
    -(void) setAddedEventFlag:(BOOL) hasAddedEvent;
@end // protocol
0 голосов
/ 09 марта 2012

Решил проблему.у меня была петля #import.Я импортировал все мои классы в мои файлы .h.я изменил @Class в .h файле и переместил # import в .m файлы и теперь работает как шарм.

0 голосов
/ 02 марта 2012
  1. Убедитесь в правильности написания.
  2. Убедитесь, что AddEventViewController.h / .m добавлены в проект.

Кроме того, что у вас естьвсе в порядке.

Редактировать

Еще я хотел бы предложить переименовать вашего делегата, возможно, существует конфликт имен.Хотя я не видел никаких проблем с «add» и «set», но в прошлом я видел проблемы с префиксом, скажем, «new».

Кроме того, очистите ваш проект и пересоберитеи посмотрите, поможет ли это.

Может возникнуть ситуация, если у вас есть несколько целей в вашем проекте и, возможно, вы только добавили AddEventViewController.h / m к одной из них, и вы создаете / отлаживаете другую цель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...