我不确定为什么这种代码不会的工作。当我按一个按钮(行动: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
有帮助吗?

解决方案

我有一种感觉,什么是错的与你使用int r的方式。尝试把static int r;在MainView.h的@interface线的顶部,并且还添加,所述- (IBAction)buttonclick;线下:

+(void) initialize;

然后,从MainView.m除去int r;。然后,在添加MainView.m:

+(void) initialize {
   count = 0;
}

其他提示

我看到两个问题:

  1. 你不能宣布 int r 你拥有它。你应该宣布它在你的口的变块(你在哪里宣布你的按钮和标签或外一个方法),或在法定义。
  2. 行r++不是结束分号。

您不要在你的问题,究竟是什么,是不是达到了预期的方式。我的猜测将是你的网点实际上没有正确连接。您可能要添加日志语句buttonClick这样的:

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

问题的关键是,多,以确保它不nil

在目标C的变量和属性的名称必须以小写字母开头,以符合键 - 值编码(KVC)协议(总是为myButton,从未myButton的)。该@synthesize指令依赖此生成getter和setter方法。因此,对于myButton @synthesize将生成-(void)setMyButton:(UIButton *)button-(UIButton *)myButton

所以,不要让MyButton及其同事小写并看看是否有帮助。

操作方法,总是有一个发件人的说法,所以你-buttonClick:方法应该声明如下:

-(IBAction) buttonClick: (id)sender {
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top