0

アプリケーションの起動が完了したときに、私のAppDelegateからUITextViewを設定しようとしました。 実際には、ファイルを開いてその内容をUITextViewに渡したいだけです。私AppDelegateでは、次のAppDelegateからUIを変更する

ViewController.h:

@interface 
{ 
    IBOutlet UITextView *textView; 
}  
- (void)openFile:(NSString *)myString; 

ViewController.m:

- (void)openFile:(NSString *)myString 
{ 
    textView.text = myString; 
} 

AppDelegate.m:

を私のViewControllerで

は、私は次のメソッドを追加しました
#import "ViewController.h" 
@implementation AppDelegate 
- (BOOL)application: [...] didFinishLaunchingWithOptions: [...] 
{ 
    ViewController *test = [[ViewController alloc] init]; 
    [test openFile:@"this is a test"]; 
} 

私のAppDelegateからメソッドを呼び出すと、実際に呼び出され、期待どおりに文字列が渡されます。 私はNSLog(@"%@", myString);でテストしました。

ただし、textViewの値は変更されません。 最初に私は他の問題があると思ったので、ビューをロードした後にUIButtonを使ってメソッドを呼び出しました。しかし、それはすべて問題なく、textViewが変更されました。

次に、AppDelegateからメソッドを呼び出した後にビューが読み込まれる可能性があると考えました。 私はいくつかのNSLogを追加して、ビューが完全に読み込まれたことが判明したので、AppDelegateがメソッドを呼び出します。

AppDelegateは、ビューが完全にロードされ、Stringを渡した後に[test openFile:(NSString *)]を呼び出します。しかし、私のtextViewの価値はまだ変化していません。

これに関するご提案はありますか? あなたの誰かが同じ問題に遭遇しましたか?

+2

コンセントがNIBに接続されていることを再度確認しましたか? – pe8ter

+0

はい、しました。しかし、この必要性のためにNIBで何を結ぶべきですか?私がアプリケーションでそれをしたいので、起動を完了しました。でも気にしないで。私はこの問題を解決しました。ありがとう –

+0

タイトルにタグを付けたり、そのような投稿に署名したりしないでください –

答えて

0

のようなものを試してみて、私がまさに必要はなかったです。しかし、あなたは私に正しいアイデアをくれました。 ありがとう!

self.viewController = [[test3ViewController alloc] initWithNibName:@"YourXibName" bundle:nil]; 
self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 
[self.viewController openFile:@"Der Test"]; 
1

ViewControllerのビューを読み込んでいません。だからアウトレットは何にもつながっていない。ビューとViewControllerをNIB(xib)ファイルからロードする場合、ViewControllerの別のインスタンスを作成する必要はありません。これは、新しいViewControllerを割り当てて初期化するときにやっていることです。何も接続していない新しいインスタンスを作成します。

IBOutletがあるので、xibファイルがあるとします。

- (BOOL)application: [...] didFinishLaunchingWithOptions: [...] 
{ 
    ViewController *test = [[ViewController alloc] initWithNibName:@"YourXibName" 
           boundle:nil ]; 
    [test openFile:@"this is a test"]; 
    self.window.rootViewController = test.view ; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
関連する問題