2

ボタンをクリックした後、ユーザーが映画を見ることができるシンプルなアプリを作成しています。最初に表示される画面は、2つのボタンがあるメインメニューです。それらの1つは、IBActionメソッドで次のようにコーディングしたサブビューにユーザーを送信します。

ViewConroller *nextView = [[ViewController alloc] initWithNibName:@"NextMenu" bundle nil];
[self.view addSubview:[nextView view]];
[nextView release];

サブビューに前のビューの下部に20ピクセルのバーが表示されることを除いて、この部分は問題ありません。私は周りを見回しましたが、このような解決策はどれも私にはうまくいきません。これも主な問題ではありません。サブビューでは、ボタンをクリックするたびにアプリが爆発します。IBActionメソッドは、メソッド内の行を実行する前に中断します。ここで、goBack IBActionメソッドで、サブビューを閉じてメインメニューに戻ろうとしています。

[self.view removeFromSuperview];

XIBファイルの接続は正しく、すべてが正常に行われているようです。ボタンが実行されていないだけです。サブビューの追加と関係があるのか​​、それとも何なのかわかりません。私はグーグルとこのウェブサイトでたくさんの検索をしました、しかし私はまだ解決策を見つけることができません。

これが私が得ているエラーの例です:

Terminating app due to uncaught exception 'NSInvalidArgumentException, reason: '-[__NSCFType goBack:]: unrecognized selector sent to instance 0x5640b70'

うまくいけば、皆さんが私を助けてくれることを願っています、これは本当に非常にイライラします。私はすべてを試したような気がします。御時間ありがとうございます。さらに情報を提供する必要がある場合はお知らせください。再度、感謝します。

4

1 に答える 1

3
ViewController *nextView = [[ViewController alloc] initWithNibName:@"NextMenu" bundle nil];

ビューコントローラが作成されます。

[self.view addSubview:[nextView view]];

self.viewサブビューとしての付加価値とnextView.viewそれを保持しました(NBそれ自体ではnext.viewなく値を保持しました)nextView

[nextView release];

nextView解放され、すぐに割り当てが解除されます(誰にも保持されたことがないため)

Buttonが割り当て解除されたオブジェクトにメッセージを送信しようとしています->動作が定義されていません。あなたの場合、他のオブジェクト(またはオブジェクトのように見えるもの)があり、その意味がわかりませんgoBack:

そのため、独自のナビゲーションを使用してホイールを発明するべきではありません(特にこれに慣れていない場合)。UINavigationController代わりに使用してください。

于 2011-03-16T16:51:51.967 に答える