0

免責事項として、私はかなりユニークな立場にある iOS 初心者です。私は仕事で学ぶインターンで、特定の仕様を備えたテストアプリの締め切りが厳しいです。そのため、残念ながら、xCode と Objective C について必要なすべてを学ぶ余裕はありません。

とにかく、iPad のスライド アウト メニューに似たナビゲーション メニューを作成しようとしています。過去にこのような質問に答えて提供されたサンプル コードをたくさん見てきました。それはすべて完全に正常に機能しますが、彼らが何をしているのかをすべて理解することはできません. これは、View Controller とデリゲートにかなり当惑した結果だと思います。そして、これはすべて自分で作成することになっているため、既存のコードから構築することはできません。

これを機能させるための私の計画は、テーブル ビューにナビゲーション メニューを含む 1 つのメイン ビュー コントローラーを用意することです。これは、ボタンが押されるまで、通常の UIView の背後に隠されています。ボタンが押されると、通常の UIView が画面外にスライドしてメニューが表示されます。メニュー項目を選択すると、通常の UIView はスライドして元の位置に戻り、View Controller によって制御される関連する UIView に置き換えられます。つまり、「ホーム」に関連するメニュー項目をクリックすると、homeViewController によって制御される homeViewController.xib がロードされます。これは、tableView の上にある通常の UIView サブビューにロードされます。

ボタンを押すと、通常の UIView にビューを読み込むことができます。

homeViewController *_homeViewController = [[homeViewController alloc]initWithNibName:@"homeViewController"];
[self frontView] = _homeViewController.view;

メモリからのものであるため、そのコードにはいくつかの構文エラーがある可能性があります。現時点では、自分のコードでコンピューターにアクセスすることはできませんが、それが一般的な要点です。基本的に、それはホーム ビュー ペン先を frontView (テーブル ビューの上にある通常の UIView) に配置しますが、homeViewController には接続されません。または、少なくともそれが問題だと思います。ボタンを押すと、ペン先と homeViewController.h の間に正しく接続され、.m ファイルで NSLog にのみ設定され、アプリケーションがクラッシュします。

このように表示されたときに、この nib をその viewController に接続する方法はありますか? または、関連付けられた .h および .m ファイルなしで IB に nib を作成し、メイン ビュー コントローラーを homeViewController としても使用しますか? または、私のロジックに本質的な欠陥がある場合、どうすればよいでしょうか? NavigationControllers で何か?

編集: また、homeViewController のファイル所有者を viewController に変更し、homeViewController のアクションのボタンを viewController に接続する新しいアプローチも試しました。これもボタンを押すとクラッシュしました。問題は、一度に複数のView Controllerが画面上で動作するか、別々のペン先から複数のビューがあり、画面上の1つのView Controllerによって一度に制御されることにあると思います。

4

1 に答える 1

0

あなたの差し迫った問題は_homeViewController、コードが含まれているメソッドを離れるとすぐに解放されることだと思います。これを修正するには、ビューが必要な限りstrong保持するプロパティをこのクラスに作成し、そのプロパティに割り当てます。_homeViewControllerローカル変数ではなく。そうすれば、そのビューの一部であるボタン (またはその他のもの) は、それらをサポートする有効なコントローラー オブジェクトを保持します。

長期的には、画面を変更する必要があるときにView Controllerをプッシュまたは提示する方がはるかに優れた戦略ですが、私が言ったように、当面の問題は.... :)

于 2012-06-25T23:29:42.643 に答える