0

xcodeとObjectiveCを使用してiPhoneアプリを構築しています。ios5.0分のターゲット用に構築しています。カスタムuitablecellを作成し、これをViewControllerのテーブル内にロードしても問題ありません。このセルにはボタンが含まれています。ユーザーがいずれかのセル内でこのボタンをタップすると、ViewController内で同じ関数を呼び出すようにします。私が過去にこれを行った方法は、カスタムセルのファイル所有者を問題のViewControllerにし、ボタンをView Controllerにドラッグして、そこにibaction関数を配置することです。常に問題なく動作します。今まで。

-[__ NSCFString loadMerchant:]:認識されないセレクターがインスタンス0x8689e50に送信されました2012-05-24 09:56:14.630 [3217:16103] *キャッチされない例外'NSInvalidArgumentException'、理由:'-[__ NSCFString loadMerchant:]:認識されないためにアプリを終了しますセレクターがインスタンス0x8689e50に送信されました '

これは取得中のエラーです。関数が誤って間違ったボタンにリンクされていないこと、関数が誤ってcell.mに含まれていないこと、およびその他の単純な間違いがないことを確認しています。

誰かが私がやろうとしていることを達成するための正しい方法を知っていますか?

編集:カスタムセル

@interface TimelineCell : UITableViewCell


@property (weak, nonatomic) IBOutlet UIButton *nameButton;


@end


@implementation TimelineCell


@synthesize nameButton;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self; }

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state }

@end 

以下はビューコントローラです

 - (IBAction)loadMerchant:(id)sender;

 - (IBAction)loadMerchant:(id)sender { }

以上です。上記のエラーでボタンをタップするとクラッシュが発生します

編集:nibファイル内にリンクをドロップし、ボタンにアクションを手動で追加するだけで問題は解決するようですが、誰かがそれに光を当てることができれば、idはそれでも原因を知ることができます。

cellForRowAtIndexPath内で作成

 UIButton *b = (UIButton*)[cell viewWithTag:1];
 [b addTarget:self action:@selector(loadMerchant:) forControlEvents:UIControlEventTouchUpInside];
4

1 に答える 1

0

私がやったことは、nibファイル内のボタンにタグを付けてから、コードでcellForRowAtIndexPathに設定されたセルのコードを介してターゲットを追加することでした。

UIButton *b = (UIButton*)[cell viewWithTag:1];
 [b addTarget:self action:@selector(loadMerchant:) forControlEvents:UIControlEventTouchUpInside];

これで問題は解決しますが、そもそもIBを介して作成されたリンクが失敗した理由についてはまだわかりません。

于 2012-05-24T11:31:25.820 に答える