Доступ к розеткам из другого класса - PullRequest
0 голосов
/ 06 июля 2011

Так вот моя проблема. Я предполагаю, что это просто, но я просто не могу понять, почему это не работает.

Мне нужен доступ к розеткам (UITextField, UITableView, UIActivityIndicatorView и т. Д.) В одном классе (RootViewController) из другого класса (ServiceController).

У меня есть это сейчас (показывает только то, что нужно):

RootViewController.h

@interface RootViewController : UIViewController{
    UITextField *textField;
}

@property (nonatomic, retain) IBOutlet UITextField *textField;

- (void)startService;

@end

RootViewController.m

@implementation RootViewController

@synthesize textField;

- (void)startService{
    ServiceController *service = [[ServiceController alloc] init];
    [service start];
    [service release];
}

@end

ServiceController.h

@class RootViewController;

@interface ServiceController : NSObject{
}

@property (nonatomic, retain) IBOutlet RootViewController *rootViewController;

- (void)start;

@end

ServiceController.m

#import "RootViewController.h"

@implementation ServiceController

@synthesize rootViewController;

- (void)start{
    [((RootViewController*)rootViewController).textField setText:@"HELLO !"];
    NSLog(@"CALLED !");
}

@end

Я не вижу, почему это не работает, я использую тот же метод, чтобы сделать то же самое от RootViewController к DetailViewController, и он работает нормально. Я проверил, есть ли какие-либо другие объявления в контроллерах detail / root, чтобы это работало, но я ничего не заметил.

PS: все вызывается успешно и "ВЫЗОВ!" регистрируется, все, что я делаю с розеткой, не имеет никакого эффекта.

Ответы [ 2 ]

0 голосов
/ 06 июля 2011

У вашего ServiceController должно быть установлено свойство rootViewController.Вы можете сделать это в файле XIB или явно в коде:

myServiceController.rootViewController = myRootViewController;

0 голосов
/ 06 июля 2011

Похоже, вы не установили rootViewController. Попробуйте добавить:

ServiceController *service = [[ServiceController alloc] init];

// set the property here
[service setRootViewController:self];

[service start];
[service release];
...