0

だからここに私の問題があります。単純なものだと思いますが、なぜこれが機能しないのか理解できません。

別のクラス(ServiceController)から1つのクラス(RootViewController)のアウトレット(UITextField、UITableView、UIActivityIndi​​catorViewなど)にアクセスする必要があります。

私は現在これを持っています(必要なものだけを示しています):

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まで同じことを実行すると、正常に機能します。詳細/ルートコントローラーにそれが機能することを許可する他の宣言があるかどうかを確認しましたが、何も気づきませんでした。

PS:すべてが正常に呼び出され、「CALLED!」ログに記録されていますが、アウトレットに対して何をしても効果はありません。

4

2 に答える 2

0

を設定しなかったようですrootViewController。追加してみてください:

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

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

[service start];
[service release];
于 2011-07-06T15:13:26.500 に答える
0

プロパティを設定ServiceControllerする必要がありrootViewControllerます。これは、XIBファイルで行うか、コードで明示的に行うことができます。

myServiceController.rootViewController = myRootViewController;

于 2011-07-06T16:11:24.507 に答える