0

文字列を割り当ててから、@selectorのパラメーターとしてボタンを渡すカスタムボタンがあります。このため、ヘッダーファイルのCustomButtonにプロパティ「name」を配置しました。ただし、文字列をボタンに割り当てると、このエラーが発生します。

'NSInvalidArgumentException', reason: '-[UIButton setName:]: unrecognized selector sent 
to instance 0x8484560'

どういう意味ですか?

CustomButton.hのコード:

 @interface CustomButton : UIButton

 @property (nonatomic, strong)NSString * name;

 @end

CustomButton.mのコード:

 @synthesize name;

MapViewController.m内

CustomButton *rightButton = [CustomButton buttonWithType:UIButtonTypeInfoLight];

NSLog(@"The button is %@", rightButton);
/*The button is <UIButton: 0x8484560; frame = (0 0; 18 19); opaque = NO; layer = 
  <CALayer: 0x8484670>>*/

rightButton.name = self.nameTable; //the error is here
4

4 に答える 4

2

だから、私は同様の「カスタムボタン」を持っています、そしてそれはうまくいくようです:

CustomButton* btn = [CustomButton buttonWithType:UIButtonTypeCustom];
[btn setName:@"Road Runner"];
//OR 
btn.name = @"Road Runner";

NSLog(@"Custom button %@", btn);
/*
OUTPUT: <CustomButton: 0x68283f0; baseClass = UIButton; frame = (0 0; 0 0); 
opaque = NO; layer = <CALayer: 0x6828500>>
*/

NSLog(@"Button's name is %@", btn.name);
/* 
OUTPUT: Road Runner //the name that was set earlier
*/

したがって、クラスが正しく作成されているかどうかを確認してくださいCustomButton。コンソールでは、UIButtonが表示されているためです。

于 2012-11-08T09:36:24.523 に答える
1

タイトルはどのように設定していますか?そのためのコードを投稿していません。このようにする必要があります-

[rightButton setTitle:[NSString stringWithFormat:@"%@", buttonTitle]  forState:UIControlStateNormal];
于 2012-11-08T09:11:54.553 に答える
1

ボタンの種類をに変更しますUIButtonTypeCustom

CustomButton *rightButton = [CustomButton buttonWithType:UIButtonTypeCustom];
于 2012-11-08T09:18:45.510 に答える
0

setName:D setTitle forState(sriskarが言ったように)またはbutton.titleLabel.textIIRCはありません

于 2012-11-08T09:21:41.207 に答える