Как инициализировать пользовательский класс / объект в контроллере, используя Objective-C на Iphone - PullRequest
6 голосов
/ 13 марта 2009

У меня есть простой класс "модель", как это (в комплекте с конструктором, конечно)

@implementation Widget
@synthesize name;
@synthesize color;

- (id) init 
{
    if (self = [super init])
    {
        self.name = @"Default Name";
        self.color = @"brown";
    }
    return self;
}

@end

Я объявил его как внутренний элемент моего контроллера следующим образом:

#import <UIKit/UIKit.h>
#import "Widget.h"

@interface testerViewController : UIViewController {
    IBOutlet UITextField    *stuffField;
    Widget *widget;
}

@property (nonatomic, retain) UITextField *stuffField;
@property (nonatomic, retain) Widget *widget;
- (IBAction)buttonPressed:(id)sender;
@end

и ... я пытаюсь инициализировать его в моем контроллере следующим образом:

#import "testerViewController.h"
@implementation testerViewController
@synthesize stuffField;
@synthesize widget;

- (IBAction)buttonPressed:(id)sender
{
    stuffField.text = widget.name;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        widget = [[Widget alloc] init];
    }
    return self;
}

но .. похоже, он не инициализирует мой объект, потому что мое текстовое поле каждый раз появляется пустым. Есть какие-нибудь подсказки?

1 Ответ

4 голосов
/ 13 марта 2009

Попробуйте использовать

- (void) метод viewDidLoad {} для инициализации ваших данных

в вашем классе интерфейса используйте @class Widget вместо #import "Widget.h"

и в своем классе реализации используйте #import "Widget.h"

и убедитесь, что вы заходите в свою кнопкуPressed handler!

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