2

私のiPhoneアプリケーションには、次のようなコードがあります。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"Instruction Controller";
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(menuButtonClicked)];   
}   


#pragma mark private methodes

-(void) menuButtonClicked{
    NSLog(@"menuButtonClicked");
}

しかし、このボタンをクリックすると、「認識されないセレクターがインスタンスに送信されました」という例外が発生します。この問題を解決するにはどうすればよいですか?

アップデート

2013-05-23 12:21:33.182 CICDP[3091:11603] -[__NSCFString menuButtonClicked]: 認識されないセレクターがインスタンス 0x8128eb0 に送信されました例外 'NSInvalidArgumentException'、理由: '-[__NSCFString menuButtonClicked]: 認識されないセレクターがインスタンス 0x8128eb0 に送信されました'

4

3 に答える 3

5

ボタンが起動する前に、コントローラー クラス (ボタン アクションのターゲット) が解放されているようです。ボタンは、そのスーパービューによって保持される可能性があります。

ボタンが表示されている間ずっと、コントローラ クラスを有効にしておく必要があります (他のインスタンスがそれへの強力な参照を保持する必要があります)。

于 2013-05-23T09:25:02.200 に答える
0

同じ問題が発生しましたが、参照の問題ではありませんでした。ログ「Interface Builder ファイル内の不明なクラス MyViewController」。とても助かります。

私は答えでこの問題を解決しました: Xcode 6 Strange Bug: Unknown class in Interface Builder file

この問題を解決するには、ビューに関連付けられているモジュールが正しく設定されていることを確認してください。

Module None が表示される場合は、問題があります

ここに画像の説明を入力

モジュールに移動し、Enter をタップしてこれを表示します。

ここに画像の説明を入力

于 2016-01-22T10:11:45.777 に答える
-3

: をセレクターに追加し、メソッドを変更する必要があります

- (void)viewDidLoad

{

    [super viewDidLoad];

    self.title = @"Instruction Controller";

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] 
        initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self 
        action:@selector(menuButtonClicked:)];   

}

-(void) menuButtonClicked:(id)sender {
    NSLog(@"menuButtonClicked");
}
于 2013-05-23T09:24:40.250 に答える