別のクラスのビューをリフレッシュできるようにしたいが、何も試していない。私のアプリケーションは、いくつかのタブが設定されたタブ付きアプリケーションです。私は、このようなViewController1クラスのリフレッシュと呼ばれるメソッドを持っていますiPhoneが別のクラスからのビューをリフレッシュする
-(void)TestMe{
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"widgjson" ofType:@"json"];
NSData *myData = [NSData dataWithContentsOfFile:filePath];
NSString *responseString = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex: 0];
NSString *docFile = [docDir stringByAppendingPathComponent: @"json.txt"];
[responseString writeToFile:docFile atomically:NO encoding:NSUTF8StringEncoding error:Nil];
[self loadView];
[self viewDidLoad];
}
これは問題なく動作します。アプリケーションが最初にロードされると、別のJSONがロードされます。このボタンをクリックすると、新しいJSONがロードされ、ビューが更新されます。これは爽やかさをテストするための一時的なものです。しかし、別のクラスやAppDelegatesのApplicationDidEnterForegroundメソッドからこのメソッドを呼び出せば、何も起こりません。
-(void)TestMe{
ViewController1 *vc = [[ViewController1 alloc] init];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"widgjson" ofType:@"json"];
NSData *myData = [NSData dataWithContentsOfFile:filePath];
NSString *responseString = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex: 0];
NSString *docFile = [docDir stringByAppendingPathComponent: @"json.txt"];
[responseString writeToFile:docFile atomically:NO encoding:NSUTF8StringEncoding error:Nil];
[vc loadView];
[vc viewDidLoad];
}
なぜこのメソッドは他のクラスでは機能しないのですか?私がしたいのは、別のクラスからのビューを更新することができるか、またはアプリケーションが読み込まれたときにビューを更新できることですが、動作するものを見つけることはできません。
誰かが私を正しい方向に向けることができれば非常に感謝しています!
EDIT:UPDATING
オーケーを明確にするために、私は、私は好きではない当面のために行っていることは、この
exit(0);
インサイドAppDelegates ApplicationDidEnterBackground置かれています。これはある程度は機能しますが、理想的な解決策ではありません。
私がしたいことは、アプリケーションを再び開くと、AppDelegateが再び実行されてタブを設定することです。サーバーから取り出されたJSONがタブの順序に影響を与える可能性があります。そのため、AppDelegates ApplicationDidFinishLaunchingメソッドを再度ロードする必要があります。
また、アプリケーションの別のクラスからこれを行うことができますか?私のアプリケーションが初めて読み込まれると、ユーザーの電話番号が尋ねられます。ユーザーの電話番号はサーバーに送信され、PINが生成されます。これが完了したら、AppDelegateメソッドをロードして、タブやオーダーなどの設定を開始します。
興味深いことに、iPhoneプログラミングの新機能は、通知センターの使い方があまり分かりませんでした。私はあなたのコードを試しましたが、usingBlockの部分の周りにエラーメッセージが出てきました。 "void(^)(NSNotification * __ strong) '型のパラメータに' void(^)(void) また、このコードは、IOSが5.0未満の電話機でも使用できますか。 – AdamM
申し訳ありません、パラメータを忘れました - 編集を参照してください。これは4.0以上で動作します。 – jrturton
コードは完璧に動作します、ありがとうございます!!!アプリのデリゲートメソッドを使用していることを理解しようとした時代を過ごしたが、この方法は簡単です。再度、感謝します!!!! – AdamM