0

初めての iPhone アプリケーションを作成していて、コードに未知のバグが見つかりました。コードは完全に正常に動作しますが、作成したカスタム UIButton をタップして次のビューをロードするときに問題が発生します。次のView Controllerにロードされる情報を処理するために呼び出されるbuttonPressed IBActionが必要ですが、関数呼び出しの順序が間違っています。5 つの異なる buttonPressed 関数があり、5 つのうち 3 つが正しく機能しています。ストーリーボードを介してまったく同じ方法でそれらを実装し、機能しないものを再作成しようとしたことに注意してください。コードを投稿しますが、コードは基本的な if/else ステートメントです。5つの方法のうち3つが機能し、他の2つが機能しない理由がわかりません。どんな助けでも大歓迎です。

**これは、作業中の 3 の望ましい順序です。

viewDidLoad -> メイン画面を読み込みます (初期ビュー コントローラー AKA ROOT、メイン画面には、カテゴリを選択するための 5 つの UIButtons があり、ボタンをタップして新しいビュー コントローラーに読み込みます)

categoryButtonPressed -> カウンターを設定します (新しいビュー コントローラーに続きます)

viewDidLoad -> 画面をロードして検索を絞り込む

(これで、タップするカスタム ボタンが 10 個以上になりました。それぞれが buttonPressed IBAction 関数を通じて処理され、ボタンがタップされて関数が呼び出されると、新しいビューが読み込まれます)

buttonPressed -> カウンターを設定します (新しいビュー コントローラーに続きます)

viewDidLoad -> 正しい情報を読み込みます

これは、非稼働 2 の順序です。

viewDidLoad -> メイン画面を読み込みます (初期ビュー コントローラー AKA ROOT) (メイン画面には、カテゴリを選択するための 5 つの UIButton があり、ボタンをタップして新しいビュー コントローラーに読み込みます)

categoryButtonPressed -> カウンターを設定します (新しいビュー コントローラーに続きます)

viewDidLoad -> 画面をロードして検索を絞り込みます (これで、タップするカスタム ボタンが 10 個以上になり、それぞれが buttonPressed IBAction 関数によって処理され、ボタンがタップされて関数が呼び出されると、新しいビューが読み込まれます)

viewDidLoad -> 空白の情報を読み込みます (空白の画面)

buttonPressed -> カウンターを設定しますが、ビューが既に空白でロードされているため遅すぎます

感想?**

以下は、categoryButtonPressed の例です。

-(IBAction)categoryButtonPressed:(id)送信者

{

if([sender tag] == 1)

    counter = 1;

else if([sender tag] == 2)

    counter = 2;

.

.

.

}

注: 特定のアイテムをロードするために、各カスタム ボタンにタグを付けています。この関数は、別の関数が特定のファイルをロードできるようにカウンターを設定するだけです。

4

1 に答える 1

0

セグエを使用します。

メイン ビュー コントローラで、特定のセグエが押されたときに必要な情報をビュー コントローラにロードして、セグエを設定します。

ストーリーボードを使用している場合は、このガイドに従うことができます。

http://www.scott-sherwood.com/?p=219

「prepareForSegue」メソッドを探します。ストーリーボードを使用する場合、モーダルに表示されるビューはこの方法で事前に構成する必要があります。

補足として、「viewDidLoad」は通常、別のビューをロードするために使用されません。ロードされた後にそのビューを構成するために使用する必要があります。

于 2012-05-16T01:05:07.063 に答える