2013-06-24 3 views
1

У меня есть 2 классов CLASSA: UIView ClassB: UIViewControllerIOS - установить цель и действие UIButton от своего суперкласса

У меня есть UIButton в ClassA

Кнопка объявлена ​​в заголовке и как @property из A

UIButton *selectBtn;  
} 
@property (nonatomic, strong) UIButton *selectBtn; 

в .m файл класса а кнопка инициализируется и появляется на экране

ClassB импортирует файл заголовка CLASSA в и из него я пытаюсь установить цель и действие для моей кнопки со следующим

[ClassA.selectBtn addTarget:self action:@selector(getSomething:)  forControlEvents:UIControlEventTouchUpInside]; 

Но я получаю сообщение об ошибке о том, «Property„selectBtn“не найден объект типа «ClassA»

Что я делаю неправильно? помощь или руководство очень ценится

ответ

4
[ClassA.selectPicBtn addTarget:self action:@selector(getSomething:)  forControlEvents:UIControlEventTouchUpInside]; 

использование selectPIcBtn вместо selectBtn

+0

Привет большое наблюдение, но он все еще не работает. , , любая другая идея. , , по-прежнему имеют одинаковую проблему. , , (Я также редактировал код, который он задал выше). Я буду использовать voute для ваших усилий: спасибо –

+0

Я не нашел других проблем. Вы синтезировали свойство? – Rox

+0

Я сделал! , , , :( –

0

Проблема здесь.

UIButton *selectBtn;  
} 
@property (nonatomic, strong) UIButton *selectPicBtn; 

selectBtn и selectPicBtn разные. имя свойства должно быть таким же, как имя переменной. Если вы объявили свойство, вам не требуется объявление переменной.

Только объявить собственность и использовать ее. При инициализации, инициализации self.selectPicBtn = [UIButton.... в Class A

+0

избавился от декларации кнопки и до сих пор не успел :( –

1

Я не знаю, если я что-то отсутствует, потому что ни один из других плакатов не принесли это вверх, но от того, что я вижу selectBtn это свойство экземпляра CLASSA, а не свойство класса. Попробуйте схватить экземпляр объекта CLASSA, а затем доступа к свойству из этого экземпляра:

//WRONG 
[ClassA.selectBtn addTarget:self action:@selector(getSomething:) forControlEvents:UIControlEventTouchUpInside]; 

//Correct 
ClassA *aClassAObject = [[ClassA alloc] init]; 
[aClassAObject.selectBtn addTarget:self action:@selector(getSomething:) forControlEvents:UIControlEventTouchUpInside]; 

Пожалуйста, имейте в виду, приведенный выше код является просто примером, и, скорее всего, не объект, который вы ищете. Если вы делаете это внутри объекта ClassB, вы должны захватить ClassA UIView, который активно используется ClassB UIViewController. Как правило, я хотел бы создать свойство в ClassB для доступа к объекту ClassA, аналогичному тому, как вы создали свойство для объекта UIButton, но я не уверен, как вы настроили свои классы без просмотра файлов заголовков.