0

私は2週間問題に立ち往生しました。
ビューにsoundPlayerの現在の期間を表示するUILabelがあります。私はUIPageViewControllerを使用しているので、ユーザーは実際の本のようにページ(私のビュー)をナビゲートします。ただし、別のView Controllerの一部が表示される場合、ラベルには現在の進行状況が表示されません(これはView Controllerの新しいインスタンスであるため)。
このUILabelを静的にするにはどうすればよいですか?つまり、ViewControllerのすべてのインスタンスが1つのUIlabelにアクセスできるため、すべてのインスタンスが1つのラベルのみを更新します。
UIPageViewControllerには少なくとも2つのViewControllerのインスタンスが必要なため、単一のデザインパターンを使用できません。
ビューコントローラの新しいインスタンスが作成されるたびにsoundPlayerが割り当てられるべきではありません。このジレンマをどのように解決すればよいですか?

あなたは天気ライブアプリで私の問題の例を見ることができます。以下の画像を参照してください。 ここに画像の説明を入力してください

サンプルコードのダウンロード:http: //upload.ugm.ac.id/300paging.zip

4

1 に答える 1

1

私がすべき唯一の変更は、静的なAVAudioPlayerを作成することです

static AVAudioPlayer * soundPlayer;

soundPalyerは静的であるため、このクラスのすべてのインスタンスオブジェクトに1つあります。

およびViewDidLoadメソッドの場合:

    if (!soundPlayer) {
        soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];
    }

そのため、あるviewControllerから別のviewControllerに移動するときに、soundPlayerは再度初期化されず、再生を続行しません。
それで全部です。

于 2013-03-01T07:07:36.550 に答える