Iboutlet еще не подключен - PullRequest
       3

Iboutlet еще не подключен

1 голос
/ 15 декабря 2010

Я новичок в разработке для iPhone и немного тренировался.Я подключил uilabel, который сделал через IB, к IBOutlet в своем коде, как говорилось во многих учебниках, но, пытаясь установить текст, он все еще говорит, что он нулевой?Я определил объект IBOutlet в своем классе .h и без проблем подключил его через IB, но не знаю, почему он все еще нулевой.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 15 декабря 2010

Хорошо, обо всем по порядку, давайте удалим некоторые посторонние вещи и сосредоточимся на том, что вам нужно.

#import "CalculatorBrain.h"

@interface CalculatorViewController : UIViewController 
{
    CalculatorBrain* _calculatorModel;
    UILabel *display;
}

- (IBAction) digitPressed:(UIButton *)sender;

@property (nonatomic, retain) IBOutlet UILabel *display;

@end


#import "CalculatorViewController.h"

@implementation CalculatorViewController
@synthesize display;

- (void)dealloc
{
    [display release], display = nil;
    [_calculatorModel release];
    [super dealloc];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (! _calculatorModel)
    {
        _calculatorModel = [[CalculatorBrain alloc] init];
    }
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    NSLog(@"display is: %@", display);
}

- (IBAction)digitPressed:(UIButton *)sender
{
    NSString *currentDigit = [[sender titleLabel] text];
    [display setText:[NSString stringWithFormat:@"%@", currentDigit]];
}

@end

Дайте нам знать, что произойдет, когда вы установите метку (display) и действие (digitPressed :) в InterfaceBuilder.

0 голосов
/ 15 декабря 2010

Попробуйте изменить свойство для копирования (или сохранить, но в этой ситуации копирование более идиоматично):

@property (copy) IBOutlet UILabel *display;

Ваше свойство assign не увеличивает счетчик ссылок длястрока, таким образом, нет никакой гарантии, что она все еще будет существовать к тому времени, когда она вам понадобится.

...