0

私のアプリでは、XML 解析によって入力されたテーブルビューを使用しています。FTP から XML を取得します。XML には、次のビューと画像の URL とテキスト用の他の xml URL が含まれています。問題は、テーブルビューの要素が選択されたときです。別のビューにプッシュしますが、非常に長い間ロードします。アプリをシミュレーターに実行しましたが、デバイスでテストしたことはありません。

何が問題なのか誰か知っていますか?

接続の問題ですか?

デバイスで正常に動作しますか?

4

1 に答える 1

1

デバイスでコードをテストし、パフォーマンスについて仮定しないことをお勧めします。サーバーにアクセスして、プッシュされたビューにそれらの画像を表示するように依頼するとします。その場合、画像プレースホルダーを使用してビューをロードし、セカンダリ スレッドでダウンロード中の画像をスピンオフし (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];

コストのかかるすべての作業をセカンダリ スレッドに送信することをお勧めします。これは、ユーザーが待たずにナビゲーション バーの [戻る] ボタンをブロックすることを嫌がるためです。ただし、プッシュした元の質問に答えるには、ビューをすぐにロードする必要がありますが、データを取得するのを待ちます。

于 2012-06-01T15:11:33.973 に答える