我正在尝试使用File's Owner
将视图中的对象“连接”到interface builder
,但蓝线不会与其“链接”。这是我的代码:
CalculatorViewController.h
:
#import <UIKit/UIKit.h>
#import "CalculatorBrain.h"
@interface CalculatorViewController : UIViewController {
IBOutlet UILabel *display;
IBOutlet UIButton *button;
CalculatorBrain *brain;
BOOL userIsInTheMiddleOfTypingANumber;
}
- (IBAction)digitPressed: (UIButton *)sender;
- (IBAction)operationPressed: (UIButton *)sender;
@end
CalculatorViewController.m
:
#import "CalculatorViewController.h"
@implementation CalculatorViewController
- (CalculatorBrain *)brain
{
if (!brain) {
brain = [[CalculatorBrain alloc] init];
}
return brain;
}
- (IBAction)digitPressed:(UIButton *)sender
{
NSString *digit = [[sender titleLabel] text];
if (userIsInTheMiddleOfTypingANumber) {
[display setText: [[display text] stringByAppendingString:digit]];
} else {
[display setText:digit];
userIsInTheMiddleOfTypingANumber = YES;
}
}
- (IBAction)operationPressed: (UIButton *)sender
{
if (userIsInTheMiddleOfTypingANumber) {
[[self brain] setOperand: [[display text] doubleValue]];
userIsInTheMiddleOfTypingANumber = NO;
}
NSString *operation = [[sender titleLabel] text];
double result = [[self brain] performOperation:operation];
[display setText: [NSString stringWithFormat: @"%g", result]];
}
@end
答案 0 :(得分:9)
尝试检查文件所有者的类是否在XIB中正确设置为ViewController类。
用于检查转到您的XIB
单击文件所有者并打开检查器。
在检查员中,转到最后一个(第四个)标签,检查您是否已将班级设为<yourViewControllerName>
希望这会对你有所帮助。
编辑:
为了更好地理解,我添加了一个您需要查找课程的图像。
另请检查您是否在ViewController的头文件中使用IBOutlet
前缀声明了变量
答案 1 :(得分:2)
确保将文件所有者设置为CalculatorViewController后,请确保CalculatorViewController.h文件中的IBOutlet类型与您尝试连接它的UI组件类型相匹配。您的标题为UILabel定义了一个IBOutlet,这意味着只能将UILabel连接到它。 如果组件属于不同类型,假设是UIButton,那么您可以更改头文件以包含IBOutlet,如下所示:
IBOutlet UIButton *button;
在标题中定义了UIButton后,请切换到IB。仔细检查文件的所有者是否已设置为viewcontroller类,然后将UIButton添加到视图中。然后你应该能够:
如果您希望IB中的UIButton触发您定义的IBAction之一,您将建立与该操作的连接。我通常通过右键单击文件所有者来执行此操作,该所有者将显示所有可用的IBActions和IBOutlets。
希望这有帮助!
答案 2 :(得分:0)
您是否已将文件所有者(在界面构建器中)设置为类CalculatorViewController。
答案 3 :(得分:0)
我不是Interface Builder或Objective C的专家,但您使用了:
@property (nonatomic, retain) IBOutlet UIButton *yourButton;
然后在.m文件中:
@synthesize yourButton;
我也不确定,但你可能必须首先“建立”它 进入Interface Builder然后它可以“连接”。