0

最初のアプリを作成したばかりで、携帯電話でテストを開始しました。ビルド後にアプリを最初に起動すると、起動イメージが表示され、json データが NSURL を介して読み込まれ、アプリに正しく表示されます。しかし、アプリを閉じて、php と mysql を介してデータを更新し、再度開くと、起動イメージが表示されず、アプリが更新されません。最初に起動したときと同じようにアプリを起動し、常に起動イメージを持ち、新しいデータを取得することは可能ですか?

それが役立つ場合、これが私のコードです。

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self loadJSON];
}


- (void)loadJSON
{

    Reachability *networkReachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus networkStatus = [networkReachability currentReachabilityStatus];
    if (networkStatus == NotReachable) {
        dispatch_async(dispatch_get_main_queue(), ^{
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Error" message: @"Connection Failed" delegate: self cancelButtonTitle:@"Refresh" otherButtonTitles:nil]; [alert show]; [alert release];
        });
    } else {

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            NSURL *url = [NSURL URLWithString:@"http://url.com/GetData.php"];

            NSData *data = [NSData dataWithContentsOfURL:url options:0 error:nil];

            NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

            NSArray *firstItemArray = array[0];

            NSString *yesNoString = firstItemArray[0];
            NSString *dateString = firstItemArray[1];
            NSString *timeString = firstItemArray[2];
            NSString *homeString = firstItemArray[3];
            NSString *awayString = firstItemArray[4];
            NSString *lastUpdatedString = firstItemArray[5];

            dispatch_async(dispatch_get_main_queue(), ^{
                self.YesOrNo.text = yesNoString;
                self.date.text = [@"For " stringByAppendingString:dateString];
                self.time.text = timeString;
                self.home.text = homeString;
                self.away.text = awayString;
                self.lastUpdated.text = lastUpdatedString;
                self.lastUpdatedText.text = @"Last Updated";
                self.vs.text = @"vs";
            });
        });
    }

}




- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    [self loadJSON];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)dealloc {
    [_YesOrNo release];
    [_date release];
    [_time release];
    [_vs release];
    [_home release];
    [_away release];
    [_lastUpdatedText release];
    [_lastUpdated release];
    [super dealloc];
}
@end

誰かが私を正しい方向に向けることができれば、それは素晴らしいことであり、感謝します.

4

2 に答える 2

3

アプリの実行中に丸いホームボタンを押すと、アプリはバックグラウンドに置かれ、一種の緊張状態で実行され続けます. アイコンをもう一度タップすると、起動するだけで、再起動しません。ユーザーがホーム ボタンを押したときにアプリを完全に終了させたい場合は、「アプリケーションはバックグラウンドで実行されません」とも呼ばれる info.plist オプション「UIApplicationExitsOnSuspend」を使用します。info.plist でこれを YES に設定すると、毎回新たなスタートを切ることができます。Project Navigator モードで Xcode のプロジェクトをクリックし、上部中央にある [info] タブを選択して、これにアクセスできます。

于 2013-07-29T02:47:29.023 に答える
1

初めてのアプリなので、さまざまなデバイスと OS のバージョンについて読んでみてください。さまざまなアプリケーションの状態、および AppDelegateClass に存在し、アプリがさまざまな状態になったときに呼び出されるメソッドについて読んで、それらについて読んでみてください。

あなたのケースで起こったことは、あなたが使用しているデバイスがマルチタスクのものです。したがって、ホーム ボタンまたはスリープ ボタンを押すと、ゲームはバックグラウンドになり、強制終了されません。そのため、次にデバイスのアプリケーション アイコンをタップすると、アイコンがフォアグラウンドに戻り、再起動されないため、Viewdidload メソッドが呼び出されず、変更が反映されません。

したがって、アプリを終了するには、このリンク http://www.gottabemobile.com/2013/02/10/how-to-close-apps-on-iphone/にアクセスできます。

お役に立てれば。

于 2013-07-29T05:15:57.970 に答える