0

次のように、アクションを ViewController.h 領域 (dayNight ボタン) にドラッグしました。

//
//  ViewController.h
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

- (IBAction)dayNight:(id)sender;
- (IBAction)insulationClick:(id)sender;

今、私はそれを読みたいと決めました:

- (IBAction)dayNightClick:(id)sender;

したがって、上記の行に示すように手動で名前を変更します。また、ViewController.m ファイルで次のように名前を変更します。

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

に:

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

コードを実行すると、ボタンを使用するとすぐにエラーが発生します。

手動で名前を変更すると(クリックという言葉なしで)、再び機能します。

コード行を手動で変更できないのはなぜですか。コードの名前も変更する必要がある別の場所はありますか?

エラーは次のとおりです。

Thread1: signal SIGABRT

main.m ファイル内の次のコード行を指します。

int main(int argc, char *argv[])
{
@autoreleasepool 
{
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

これは本当に基本的な質問だと思います。

4

3 に答える 3

2

これは、ストーリーボード/ペン先がまだ古い名前を指しているために発生します。nib ファイルは基本的にバックグラウンドで単なる XML ファイルであるため、nib/ストーリーボードを開いて、すべての参照を表示するインスペクターに移動する必要があります。IBAction への古い参照がまだそこに存在することがわかります。小さな十字を押してそれを削除し、ViewController に再度ドラッグして、名前を変更した関数に接続します。

ヘッダー ファイルでメソッド シグネチャを変更する場合は、必ずストーリーボードと .m の両方を更新することを忘れないでください :)

于 2012-08-12T11:03:55.637 に答える
1

私が発見したことは次のとおりです。

  • ストーリー ボード (つまり、idevice の GUI 表現を見ることができるビュー) に移動します。
  • 名前を変更するボタンをクリックします (削除します)。
  • 「接続インスペクターを表示」というボタンをクリックします(xcodeの右上隅近くにあり、黒い円の中に右向きの矢印のように見えます)。
  • 「Sent Events」というセクションがあり、ボタン イベントの周りにバブルが描画され、IBAction の名前を持つ 2 番目のバブルへのリンクが表示されます。
  • 2 番目の吹き出しの小さな十字 (x) をクリックして、イベント リンクを削除します。

ここで、もう一度開始して、ボタンの名前を好きな名前に変更できます。私の例では、次のように名前を変更しました。

(IBAction)dayNight:(id)sender{} 

に:

(IBAction)dayNightClick:(id)sender{} 

したがって、これはボタンへのすべての参照を削除し、単純に再作成することで名前を変更しています。それを削除する他の2つの場所は次のとおりです。

  • *.h ファイルの例では、次の行を削除しました。

    (IBAction)dayNight:(id)送信者{}

*.m ファイルの例では、次のコードを削除しました。

(IBAction)dayNight:(id)sender{} 
{
    // code in here
}
于 2012-09-17T04:07:11.650 に答える
0

はい。ボタンには、ボタンが押されたときに呼び出される関連付けられたターゲット/セレクターがあります。次のような行を探します。

[button addTarget:self action:@selector(dayNight:) forControlEvents:UIControlEventTouchUpInside];

ここでもセレクターを変更します。

于 2012-08-12T11:15:31.363 に答える