查看对象无法连接到文件所有者

时间:2011-03-29 05:35:28

标签: iphone xcode interface-builder

我正在尝试使用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  

4 个答案:

答案 0 :(得分:9)

尝试检查文件所有者的类是否在XIB中正确设置为ViewController类。

用于检查转到您的XIB

单击文件所有者并打开检查器。

在检查员中,转到最后一个(第四个)标签,检查您是否已将班级设为<yourViewControllerName>

希望这会对你有所帮助。

编辑:

为了更好地理解,我添加了一个您需要查找课程的图像。

enter image description here

另请检查您是否在ViewController的头文件中使用IBOutlet前缀声明了变量

答案 1 :(得分:2)

确保将文件所有者设置为CalculatorViewController后,请确保CalculatorViewController.h文件中的IBOutlet类型与您尝试连接它的UI组件类型相匹配。您的标题为UILabel定义了一个IBOutlet,这意味着只能将UILabel连接到它。 如果组件属于不同类型,假设是UIButton,那么您可以更改头文件以包含IBOutlet,如下所示:

IBOutlet UIButton *button;

在标题中定义了UIButton后,请切换到IB。仔细检查文件的所有者是否已设置为viewcontroller类,然后将UIButton添加到视图中。然后你应该能够:

  1. ctrl +从组件拖动到文件的所有者
  2. 右键单击文件的所有者,然后获取一个HUD样式的弹出窗口,显示所有可用的IBOutlet。单击并从UIButton中拖动到视图中的UIButton。
  3. 如果您希望IB中的UIButton触发您定义的IBAction之一,您将建立与该操作的连接。我通常通过右键单击文件所有者来执行此操作,该所有者将显示所有可用的IBActions和IBOutlets。

    Making connection from UIButton to IBAction

    希望这有帮助!

答案 2 :(得分:0)

您是否已将文件所有者(在界面构建器中)设置为类CalculatorViewController。

答案 3 :(得分:0)

我不是Interface Builder或Objective C的专家,但您使用了:

@property (nonatomic, retain) IBOutlet UIButton *yourButton;

然后在.m文件中:

@synthesize yourButton;

我也不确定,但你可能必须首先“建立”它 进入Interface Builder然后它可以“连接”。

相关问题