1

我不确定为什么这段代码不起作用。当我单击一个按钮(操作:buttonclick)时,它应该将两个文本框(MyTextLabel 和 MyTextLabel2)的文本增量值“r”加一。这是代码:

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

主视图.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.h 放在行首,并在行下static int r;添加:@interface- (IBAction)buttonclick;

+(void) initialize;

然后int r;从 MainView.m 中删除。然后在 MainView.m 添加:

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

我看到两个问题:

  1. 你不能声明int r你在哪里拥有它。您应该在界面的变量块(在其中声明按钮和标签或在方法之外)或方法定义中声明它。
  2. 带有 r++ 的行不以分号结尾。
于 2009-11-03T02:52:17.403 回答
0

你没有在你的问题中说究竟是什么没有按照你期望的方式工作。我的猜测是您的插座实际上没有正确连接。您可能希望添加一条日志语句,buttonClick如下所示:

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

主要是要确保它不是nil

于 2009-11-03T02:18:06.363 回答
0

在 Objective-C 中,变量和属性的名称必须以小写字母开头,以符合键值编码 (KVC) 协议(总是 myButton,而不是 MyButton)。该@synthesize指令依赖于此来生成 setter 和 getter。因此, formyButton @synthesize将生成-(void)setMyButton:(UIButton *)buttonand -(UIButton *)myButton

所以,做 makeMyButton和它的同事小写,看看它是否有帮助。

于 2009-11-03T13:23:37.687 回答
0

Action 方法总是有一个 sender 参数,所以你的-buttonClick:方法应该这样声明:

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