Просмотр объектов не подключается к владельцу файла - PullRequest
1 голос
/ 29 марта 2011

Я пытаюсь «соединить» мои объекты в представлении с 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 ]

9 голосов
/ 29 марта 2011

Попробуйте и проверьте, правильно ли установлен класс Владельца вашего файла на ваш класс ViewController в вашей XIB.

Для проверки перейдите на свой XIB

Нажмите на владельца файла и откройте инспектор.

В инспекторе перейдите на последнюю (четвертую) вкладку и проверьте, установлен ли ваш класс как <yourViewControllerName>

Надеюсь, это поможет вам.

РЕДАКТИРОВАТЬ:

Для лучшего понимания я добавил изображение того, где нужно искать класс.

enter image description here

Также, пожалуйста, проверьте, что вы объявили переменные с префиксом IBOutlet в заголовочном файле вашего ViewController

2 голосов
/ 29 марта 2011

Убедившись, что владельцем файла установлено значение CalculatorViewController, убедитесь, что тип IBOutlet в файле CalculatorViewController.h соответствует типу компонента пользовательского интерфейса, к которому вы пытаетесь подключиться.Ваш заголовок определяет IBOutlet для UILabel, что означает, что к нему может быть подключен только UILabel.Если компонент другого типа, скажем, UIButton, то вы изменили бы свой заголовочный файл, включив в него IBOutlet, например:

IBOutlet UIButton *button;

Как только вы определили UIButton в своем заголовке, переключитесь на IB,Дважды проверьте, что владельцем файла задан ваш класс viewcontroller, затем добавьте UIB-кнопку к представлению.Тогда вы сможете:

  1. ctrl + перетащить из компонента к владельцу файла
  2. щелкнуть правой кнопкой мыши по владельцу файла и получить всплывающее окно в стиле HUD, отображающее все доступные IBOutlet,щелкните и перетащите с UIButton one на UIButton в вашем представлении.

Если вы хотите, чтобы UIButton в IB вызывал одну из ваших определенных IBActions, вы создадите соединение с действием.Обычно я делаю это, щелкая правой кнопкой мыши на Владельце файла, где отображаются все доступные IBActions и IBOutlets.

Making connection from UIButton to IBAction

Надеюсь, это поможет!

0 голосов
/ 26 сентября 2011

Я не эксперт по Интерфейсному Разработчику или Objective C, но вы использовали:

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

и затем в файле .m:

@synthesize yourButton;

Я тоже не уверен, но вам, возможно, придется сначала «построить» его, затем зайдите в Интерфейсный Разработчик, и затем это может 'соединиться'.

0 голосов
/ 29 марта 2011

Вы установили владельцем файла (в конструкторе интерфейса) класс CalculatorViewController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...