我不确定为什么这段代码不起作用。当我单击一个按钮(动作:buttonclick)时,它应该将两个文本框'(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
答案 0 :(得分:1)
我对你使用int r
的方式感到有些不对劲。尝试将static int r;
放在MainView.h中@interface
行的顶部,并在- (IBAction)buttonclick;
行下添加:
+(void) initialize;
然后从MainView.m中删除int r;
。然后在MainView.m中添加:
+(void) initialize {
count = 0;
}
答案 1 :(得分:1)
我看到两个问题:
int r
声明您拥有它的地方。您应该在界面的变量块(您声明按钮和标签或方法之外)或方法定义中声明它。答案 2 :(得分:0)
你没有在你的问题中说出什么,确切地说,没有按照你期望的方式工作。我的猜测是你的网点实际连接不正确。您可能希望将日志语句添加到buttonClick
,如下所示:
NSLog(@"button click called! MyTextLabel is %@", MyTextLabel);
重点是,确保它不是nil
。
答案 3 :(得分:0)
在Objective-C中,变量和属性的名称必须以小写字母开头,以符合键值编码(KVC)协议(总是myButton,而不是MyButton)。 @synthesize
指令依赖于此来生成setter和getter。因此,myButton
@synthesize
会生成-(void)setMyButton:(UIButton *)button
和-(UIButton *)myButton
。
所以,请将MyButton
及其同事小写,看看是否有帮助。
答案 4 :(得分:0)
Action方法总是有一个sender参数,所以你的-buttonClick:
方法应该这样声明:
-(IBAction) buttonClick: (id)sender {
}