@合成为没有工作和基本的作业都不能工作,在目标C
-
12-09-2019 - |
题
我不确定为什么这种代码不会的工作。当我按一个按钮(行动: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;
}
其他提示
我看到两个问题:
- 你不能宣布
int r
你拥有它。你应该宣布它在你的口的变块(你在哪里宣布你的按钮和标签或外一个方法),或在法定义。 - 行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 {
}
不隶属于 StackOverflow