UIView.h
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface UIView : UIResponder {
IBOutlet UILabel *endLabel;
IBOutlet UIButton *goButton;
IBOutlet UITextField *textBox1;
IBOutlet UITextField *textBox2;
@property(nonatomic, retain) UILabel *endLabel;
@property(nonatomic, retain) UIButton *goButton;
@property(nonatomic, retain) UITextField *textBox1;
@property(nonatomic, retain) UITextField *textBox2;
}
- (IBAction)goButtonClicked;
@end
UIView.m
#import "UIView.h"
@implementation UIView
@synthesize textBox1, goButton;
@synthesize textBox2, goButton;
@synthesize textBox1, endLabel;
@synthesize textBox2, endLabel;
@synthesize goButton, endLabel;
- (IBAction)goButtonClicked {
}
@end
答案 0 :(得分:4)
对@synthesize
s有点疯狂,是吗?我确实认为您的主要问题是@property
声明需要在@interface
的结束后 。
令我惊讶的是,编译器没有抛出格陵兰岛大小的红旗,而是'。
此外,您可能打算创建UIView
的自定义子类;我将使用MyView
。
//MyView.m -- correct synthesize declaration
@synthesize textBox1, goButton, textBox2, endLabel;
//MyView.h -- correct interface declaration
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface MyView : UIView {
IBOutlet UILabel *endLabel;
IBOutlet UITextField *textBox1;
IBOutlet UITextField *textBox2;
IBOutlet UIButton *goButton;
}
@property(nonatomic, retain) UIButton *goButton;
@property(nonatomic, retain) UILabel *endLabel;
@property(nonatomic, retain) UITextField *textBox1;
@property(nonatomic, retain) UITextField *textBox2;
@end
答案 1 :(得分:0)
第一个问题是你正在命名你的类UIView,它已经存在于UIKit中。请参阅 @ Williham的有关解决此问题的建议。
每个属性只需要一个@synthesize
,当属性名称与实例变量名称匹配时,您只需在.m文件中执行以下操作:
@synthesize endLabel;
@synthesize goButton;
@synthesize textBox1;
@synthesize textBox2;
此外,您可能会遇到使IBAction
方法生效的问题。要将方法用于目标 - 操作链接,它必须具有IBAction
的返回类型(您有正确的)并接受表示发件人的id
参数。规范方法签名如下所示:
- (IBAction) goButtonClicked:(id)sender;
我实际上推荐的方法名称没有明确地绑定到调用它的按钮,特别是因为可能有其他方法来调用相同的操作。 (例如,如果您正在编写桌面应用程序,则等效键或菜单命令可以执行相同的操作。)