2013-12-04 3 views
1

Im очень новый объектив c и iOS. Это мое первое приложение, которое всегда носит со мной.Установка свойства класса дает непризнанную ошибку выбора

Я просто пытаюсь сделать страницу с некоторыми кнопками, которые динамически создаются из текстового файла, который откроет страницу в веб-просмотре.

Я основывая свой код от этого: how can i pass any kind of parameter in UiButton action?

MyButton.h

#import <Foundation/Foundation.h> 

@interface MyButton : UIButton 
{ 
    NSString *_linkURL; 
} 
@property (nonatomic, retain) NSString *linkURL; 
@end 

MyButton.m

#import "MyButton.h" 

@implementation MyButton 
@synthesize linkURL = _linkURL; 
@end 

Итак, в моем файле ViewController.m Я импортирую MyButton и пытаюсь использовать его для создания кнопок, у которых есть URL как их ow n.

MyButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown]; 
[button setLinkURL:URL]; //THIS IS THE LINE THATS GIVING ME THE unrecognized selector at instance error 

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

+2

Это ошибка компиляции или ошибка времени выполнения? И вы хотите 'MyButton * button = [MyButton buttonWithType: UIButtonTypeRoundedRect];' – rmaddy

+0

Ошибка выполнения, но исправленная. Спасибо, я просто не видел эту опечатку. Опубликовать как ответ и принять, если хотите – Kierchon

+1

Во-первых, избавиться от декларации ivar и строки «@synthesize». Не нужно делать. Если вы создаете свойство, linkURL, компилятор автоматически создает ivar _linkURL. Кроме того, опубликуйте фактическую ошибку, не перефразируйте. – rdelmar

ответ

5

Проблема эта линия:

MyButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

Оно должно быть:

MyButton *button = [MyButton buttonWithType:UIButtonTypeRoundedRect]; 

Как было это вы создавали экземпляр UIButton вместо MyButton ,

2

Ваша проблема с этой линии:

MyButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

Вы закидывающих UIButton к MyButton, но объекты типа UIButton не имеют свойства MyButton объекта. Вам нужно что-то вроде:

MyButton *button = [[MyButton alloc] initWithType:UIButtonTypeRoundedRect]; 
+0

Да, rmaddy упомянул об этом, и он исправил его, но он не дал мне компиляционную ошибку или предупреждение. Это спасло бы мне около 30 минут моей жизни. – Kierchon

+0

@Kierchon Right ... Метод 'buttonWithType' возвращает тип' id', который можно использовать для чего-либо без предупреждения. – godel9

+0

Если у вас был вопрос, пожалуйста, отметьте его. –

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