私のアプリでは、XML 解析によって入力されたテーブルビューを使用しています。FTP から XML を取得します。XML には、次のビューと画像の URL とテキスト用の他の xml URL が含まれています。問題は、テーブルビューの要素が選択されたときです。別のビューにプッシュしますが、非常に長い間ロードします。アプリをシミュレーターに実行しましたが、デバイスでテストしたことはありません。
何が問題なのか誰か知っていますか?
接続の問題ですか?
デバイスで正常に動作しますか?
私のアプリでは、XML 解析によって入力されたテーブルビューを使用しています。FTP から XML を取得します。XML には、次のビューと画像の URL とテキスト用の他の xml URL が含まれています。問題は、テーブルビューの要素が選択されたときです。別のビューにプッシュしますが、非常に長い間ロードします。アプリをシミュレーターに実行しましたが、デバイスでテストしたことはありません。
何が問題なのか誰か知っていますか?
接続の問題ですか?
デバイスで正常に動作しますか?
デバイスでコードをテストし、パフォーマンスについて仮定しないことをお勧めします。サーバーにアクセスして、プッシュされたビューにそれらの画像を表示するように依頼するとします。その場合、画像プレースホルダーを使用してビューをロードし、セカンダリ スレッドでダウンロード中の画像をスピンオフし (UI をブロックしないように読み込みを遅くすることをお勧めします)、画像データが利用可能になったときに画像プレースホルダーを更新する必要があります。
より具体的なヘルプが必要な場合は、この回答を喜んで更新します。
プッシュされたビューにテーブルビューをロードしている場合、プッシュされたビューの前にビューでハングが発生します (これは非常にひどい UX です)。したがって、時間がかかるコードのロジックを「プッシュ ビュー」のサブクラスに移動すると、データをクランチしながらスピナー (私は MBProgressHud を使用) のようなものを実装できます。このようにして、ラグが始まる前にビューをロードできます。
UX を改善するための流れは次
のようになります- (void)viewDidLoad
。
[self.myTable setHidden:YES];
2.-(void)viewDidAppear:(BOOL)animated
プッシュされたビューで、ユーザーが作業を行っていることをユーザーに知らせるスピナーをスローし (ここでの作業は、URL から画像を検索するためにサーバーに移動します)、作業を行います。
//your code here will vary
3. すべてのデータがダウンロードされたことがわかったら、テーブルをロードし、スピナーを非表示にしてテーブルを表示します。-(void)viewDidAppear:(BOOL)animated
これは、メソッドの最後で行うことができます。
[MBProgressHUD hideHUDForView:self.view animated:YES];
[myTable reloadData];
コストのかかるすべての作業をセカンダリ スレッドに送信することをお勧めします。これは、ユーザーが待たずにナビゲーション バーの [戻る] ボタンをブロックすることを嫌がるためです。ただし、プッシュした元の質問に答えるには、ビューをすぐにロードする必要がありますが、データを取得するのを待ちます。