0

私は Xcode 4.3.2 で作業しています。

私はXcodeが初めてです。ボタンのクリックで別のビューに変更する必要があるアプリケーションを構築しています。私のファイルは次のとおりです: AppDelegate.h/.m、GreenViewController.h/.m、SwitchViewController.h/.m、GreenView.xib - ストーリーボードを使用していませんが、プロジェクトでは使用しないよう要求されています (下位互換性の問題) )。

ここに私の問題があります (非常に単純に思えます): UIButton (GreenView.xib に配置) がクリックされたときに、コンソールに出力しようとしています。GreenViewController.h のコードは次のとおりです。

#import <UIKit/UIKit.h>
@interface GreenViewController : UIViewController
- (IBAction)switchViews:(id)sender;
@end

GreenViewController.m の私の (非推奨の) コードは次のとおりです。

#import "GreenViewController.h"
@implementation GreenViewController

- (IBAction) switchViews:(id)sender {
    NSLog(@"Button Pressed!");
}

GreenView.xib の所有者は GreenViewController です。

何らかの理由で、UIButton (GreenView.xib 内) が押されたときにのみエラーが発生します。

2012-10-09 18:07:38.490 MyViewSwitcher[8655:f803] -[SwitchViewController switchViews:]: unrecognized selector sent to instance 0x688a660
2012-10-09 18:07:38.492 MyViewSwitcher[8655:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SwitchViewController switchViews:]: unrecognized selector sent to instance 0x688a660'

SwitchViewController はメソッド「switchViews」から何かを期待しているようですが、「switchViews」は GreenViewController にしかリストされていません。以前は、SwitchViewController に「switchViews」がありましたが、メソッドとすべての接続に対応するすべてのコードを削除しました。繰り返しますが、GreenViewController の「switchViews」が GreenView.xib にある UIButton に接続されていることを再確認しました。プロジェクトを既にクリーンアップして再構築しましたが、まだこのエラーが発生します。

ご協力いただきありがとうございます!

4

1 に答える 1

1

あなたのエラーが言っているのはswitchViews:、のインスタンスでメソッドを呼び出しているということですSwitchViewControllerswitchViews:そして、 class の (削除したため)の定義がないためSwitchViewController、何をすべきかわからず、クラッシュします。

言いたくないのですが、あなたのボタンはswitchViews:a のメソッドに接続されていますSwitchViewController。「GreenViewController の 'switchViews' が GreenView.xib にある UIButton に接続されていることを再確認しました」とあなたは言います。ええ、ええ、あなたのクラッシュから、そうです。しかし、それがインスタンスのswitchViews:機能に関連していると確信していますか? GreenViewControllerこの情報をどのように確認しましたか?

私がお勧めするのは、接続インスペクターで UIButton へのすべての接続を削除することです。次に、View Controller(GreenViewControllerと言う)に再接続します。次に、メソッドのみである必要がある IBActions のリストを表示する必要がありswitchViews:ます。

あなたがそれをしても、それはまだうまくいきません。ボタンを削除して作り直してから、再度接続してみてください。

于 2012-10-11T17:28:22.027 に答える