0

所以这是我的问题。我认为它是一个简单的,但我无法弄清楚为什么这不起作用。

我需要从另一个类(ServiceController)访问一个类(RootViewController)中的插座(UITextField、UITableView、UIActivityIndi​​catorView 等)。

我目前有这个(只显示需要什么):

RootViewController.h

@interface RootViewController : UIViewController{
    UITextField *textField;
}

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

- (void)startService;

@end

根视图控制器.m

@implementation RootViewController

@synthesize textField;

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

@end

服务控制器.h

@class RootViewController;

@interface ServiceController : NSObject{
}

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

- (void)start;

@end

服务控制器.m

#import "RootViewController.h"

@implementation ServiceController

@synthesize rootViewController;

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

@end

我不明白为什么这不起作用,我使用相同的方法从 RootViewController 到 DetailViewController 做同样的事情,它工作正常。我检查了细节/根控制器中是否有任何其他声明允许它工作,但我没有注意到任何。

PS:一切都被成功调用并“调用!” 正在被记录,只是我对插座所做的任何事情都没有效果。

4

2 回答 2

0

ServiceController需要rootViewController设置其属性。您可以在 XIB 文件中执行此操作,也可以在代码中显式执行此操作:

myServiceController.rootViewController = myRootViewController;

于 2011-07-06T16:11:24.507 回答
0

看起来你没有设置rootViewController. 尝试添加:

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

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

[service start];
[service release];
于 2011-07-06T15:13:26.500 回答