1

このコードが機能しない理由がわかりません。ボタンをクリックすると (アクション: buttonclick)、2 つのテキスト ボックス (MyTextLabel と MyTextLabel2) のテキスト インクリメント値 "r" が 1 ずつ変更されます。コードは次のとおりです。

MainView.h

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@interface MainView : UIView {
    IBOutlet UIButton *MyButton;
    IBOutlet UILabel *MyTextLabel;
    IBOutlet UILabel *MyTextLabel2;
}

@property (nonatomic, retain) UIButton *MyButton;
@property (nonatomic, retain) UILabel *MyTextLabel;
@property (nonatomic, retain) UILabel *MyTextLabel2;


- (IBAction)buttonclick;
@end

MainView.m:

#import "MainView.h"
#include <stdlib.h>
#include <libc.h>

@implementation MainView

@synthesize MyButton, MyTextLabel, MyTextLabel2;

int r;

- (IBAction)buttonclick {
    r++
    if(r < 50) {
        MyTextLabel.text = @"< 50";
    }
    else {
        MyTextLabel2.text = @"=> 50";
    }
}
@end
4

5 に答える 5

1

使い方がおかしい気がしますint r。MainView.hstatic int r;の行の先頭に配置して、行@interfaceの下にも追加してみてください。- (IBAction)buttonclick;

+(void) initialize;

次にint r;、MainView.m から削除します。次に MainView.m に以下を追加します。

+(void) initialize {
   count = 0;
}
于 2009-11-03T02:51:41.010 に答える
1

2 つの問題があります。

  1. どこにあるかは公表できませんint r。インターフェイスの変数ブロック (ボタンとラベルを宣言する場所、またはメソッドの外側) またはメソッド定義で宣言する必要があります。
  2. r++ の行がセミコロンで終わっていません。
于 2009-11-03T02:52:17.403 に答える
0

Objective-C では、Key-Value Coding (KVC) プロトコルに準拠するために、変数とプロパティの名前は小文字で始める必要があります (常に myButton で、決して MyButton ではありません)。ディレクティブはこれ@synthesizeに依存してセッターとゲッターを生成します。したがって、 formyButton @synthesizeは と を生成-(void)setMyButton:(UIButton *)button-(UIButton *)myButtonます。

したがって、makeMyButtonとその同僚を小文字にして、それが役立つかどうかを確認してください。

于 2009-11-03T13:23:37.687 に答える
0

あなたの質問では、正確には、期待どおりに機能していないことは言いません。私の推測では、コンセントが実際には正しく接続されていません。buttonClick次のようなログ ステートメントを追加することもできます。

NSLog(@"button click called! MyTextLabel is %@", MyTextLabel);

ポイントは、ほとんどの場合、そうではないことを確認することですnil

于 2009-11-03T02:18:06.363 に答える
0

アクション メソッドには常に送信者引数があるため、-buttonClick:メソッドは次のように宣言する必要があります。

-(IBAction) buttonClick: (id)sender {
}
于 2011-07-01T00:07:42.557 に答える