問題タブ [uinavigationcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
821 参照

iphone - プッシュされたビューコントローラを「適切に」リリースするとiPhoneがクラッシュする

ナビゲーションコントローラーベースのアプリケーションを使用していますが、ビューコントローラーのプッシュのいくつかがビューコントローラーの「ポップ」時にクラッシュを引き起こすという奇妙な問題が発生しています。

ナビゲーションコントローラーのスタックにプッシュした後にViewControllerを解放するコード行に絞り込みました。

私のコードは次のようになります。

これ適切なメモリ管理コードですが、残念ながら「インスタンス0x .....にダブルフリー送信」エラーが発生し、アプリがクラッシュします。これは通常、ビューコントローラをポップしたときに発生します。

私は何を見るべきかについての提案を探しています。私は立ち往生しています。

前もって感謝します。

編集:これは、以下のLouisによって提案されたスタックトレースダンプの結果です。

最初のリリースでは、保持カウントは13です(CocoaTouch基本クラスの深いコードが原因だと思います)。最終的にそれはこれに帰着します:

object = 0xd09070

上記の問題のある行を省略した場合([viewControllerリリース];)、保持カウントは2になり、インスタンスの割り当てが解除されることはありません。

0 投票する
2 に答える
4659 参照

iphone - UINavigationItem setHidesBackButton:YESは戻るのを妨げません

奇妙なことですが、ビューに関連付けられたUINavigationItemに対してhidesBackButtonをYESと指定した場合でも、戻るボタンであるはずの領域に触れるだけで戻ることができます。

私のソリューションを共有しています...(今後さらに

0 投票する
1 に答える
1327 参照

iphone - ビューの強制ロード/アンロード

ビューのフィールドのみを更新するようにビュー コントローラーを設定するには、ナビゲーション コントローラーにプッシュされ、ナビゲーション コントローラー ビューからポップされたときにオブジェクトを解放する方法を教えてください。

私の目標は、View Controller の場合です。

  1. ナビゲーション コントローラー スタックでプッシュされた場合にのみ表示を更新する
  2. ナビゲーション コントローラ スタックからポップされるときにデータを解放します
  3. コントローラーを可能な限り再利用します (xib ファイルのロード/アンロードのオーバーヘッドをなくすため)

とのデリゲート メソッドはviewWillBePushed:ありviewWillBePopped:ますか?

ビューの3つのレイヤーがあるとしましょう:

Movie各映画を表すクラスがあるとします。

ここでUIViewControllerは、プログラムの実行時にそれぞれ 1 つのインスタンスである 3 つの のみが必要です。したがって、同じMovieInfoControllerものを別の映画や同様に再利用できMovieCreditsControllerます。

MovieInfoControllerただし、スタックにプッシュされたときにのみ、ビュー フィールド (タイトル、リリース日など) のみを更新したいと思います。で表示を実装すると、がポップviewWillAppearされた場合でも、強制的にフィールドが更新されます。MovieCreditsController

また、ポップされたとき、および潜在的に大きなオブジェクト (カバー画像など)へのMovieInfoController参照を解放したいと考えています。Movieこのロジックを実装すると、スタックにviewWillDisappearプッシュするときにデータが解放されます。MovieCreditsController

合理性はありますか?私はそれについて間違った方法で進んでいますか?

0 投票する
1 に答える
1906 参照

iphone - 最適な titleView 幅を計算するにはどうすればよいですか?

UIViewtitleView になるカスタム サブクラスでナビゲーションを使用しています。これが利用可能な全幅であることを確認したいと思います。

UIViewController私のから論理的にはviewWillAppear:、これは次のようになります。

(ここには適切なアイテムがありません。)

これは、 のさまざまな可能な幅に適応しleftBarButtonItemます。キャッチは、つまりleftBarButtonItemですnilので、leftBarButtonItem.width常に 0 です (とにかく、シミュレーターでは)。

backBarButtonItemもゼロです。

代わりに何をすべきですか?

0 投票する
1 に答える
617 参照

iphone - 詳細ビューに切り替えるときにUILabel.textを複数回変更することはできません

テーブルの行を選択すると、navControllerのスタックに詳細ビューがプッシュされ、選択した行に関する詳細情報が表示されるように、navControllerとtableViewControllerを設定しています。詳細ビューでは、単一のUILabelを使用して情報を表示し、詳細ビューコントローラーのviewDidLoadでラベルのtextプロパティの値を設定します。

初めて行を選択すると、詳細ビ​​ューに期待されるテキストが表示されます。テーブルビューに戻って別の行を選択すると、詳細ビ​​ューに最初と同じテキストが表示されます。

詳細ビューコントローラーが解放され、navControllerのスタックにプッシュされた後にnilに設定されるコードサンプルをいくつか見ました。それをコードに追加すると、問題は解決しますが、理由がわかりません。

誰かがここで何が起こっているのか私に説明できますか?

ありがとう!

0 投票する
3 に答える
1766 参照

iphone - UITabBarControllerUINavigationController設計アドバイス

これは何よりも哲学的な質問ですので、私にあなたの考えを教えてください。

iPhone SDKのドキュメントでは、タブバーコントローラーにナビゲーションコントローラーを含めることができると指定されていますが、ナビゲーションコントローラーにタブバーコントローラーを含めることはできません。ナビゲーションコントローラースタックの一部であるビュー内のビューを表形式で整理したい場合があるようです。これは無理ですか?

私は、HIGが最も抵抗の少ない道を明らかにしているように見えるベストプラクティスを提供しているのと同じように、Appleがこれらの分野で指示することを福音として受け入れます(それには例外があると確信しています)。ただし、タブバーの場合、その背後にある設計上の理由はわかりません。他の人には明らかかもしれませんが、ルートレベルのビューコントローラ以外のタブを許可しない理由は考えられません。

みなさんはどう思いますか/知っていますか?これによりどのような設計上の欠陥が生じますか?ビュー内のビューを表形式で表示する必要があるというこの問題をどのように解決しますか?デザイン全体を再考する必要がありますか?

ありがとう。

0 投票する
3 に答える
2639 参照

objective-c - Mobile Safari に似たスクロール可能な UINavigationBar

私のアプリケーションは を使用してUINavigationControllerおり、最終ビュー (詳細ビュー) では、 を使用してアプリケーション内で外部 Web サイトを表示できますUIWebView

ユーザーが Web ページを表示しているときに追加の画面領域を解放したいと考えており、コンテンツを表示しているときに上部の URL バーがスクロールアップして画面から消える iPhone の Safari の動作をエミュレートしたいと考えていますUIWebView。フォールドの下。

これを達成する方法について誰にもアイデアがありますか? プロパティを設定しnavigationBarHidden、独自のカスタム バーを上部にロールして設定すると、UIWebView他のスクロール可能なビューではうまく再生されないためUIScrollView、スクロールの問題が発生します。UIWebView

0 投票する
2 に答える
5740 参照

iphone - カスタムUITableViewCell内からモーダルウィンドウを呼び出す

UITableViewがあり、その中に次の方法でカスタムUITableViewCellを作成します。

これは、touchesBeganイベントとtouchesEndedイベントを取得できるようにするために行います(これにより、ロングタッチを実装できます)。NSLogを使用すると、次のコードを使用して、touchesBeganメソッド内からlongTouchが適切に呼び出されていることがわかります。

問題は、longTouchメソッド内からモーダルウィンドウを呼び出すことができないことです。

次のことを試しましたが、NSInvalidArgumentException-[ItemCellController NavigationController]:認識されないセレクターがインスタンスに送信されましたエラーが発生します。

したがって、問題は、カスタムUITableViewCell内からモーダルウィンドウを呼び出すにはどうすればよいかということです。

ありがとう

0 投票する
3 に答える
5003 参照

iphone - rootViewController を UINavigationController に追加する際の問題

次のコードに問題があります。

プログラムを実行すると、myController のビューが y 軸に沿って画面の下部まで繰り返されるという問題が発生します。myController.view をルート ビューに追加すると、問題なく動作します。ナビゲーション コントローラーの rootViewController として myController を追加した場合にのみ問題が発生します。

助けてくれてありがとう!

0 投票する
1 に答える
556 参照

iphone - UINavigation を UIToolbar に置き換えますか?

ナビゲーション ベースのアプリを作成しましたが、コードに深く入り込んだので、代わりに UIToolbar だけを使用するのが実際には最善であると判断しました (ドリルダウンではなく、モーダル ビューのみが必要です)。しかし、ナビゲーションを解放してツー​​ルバーに置き換えると、あらゆる種類の悲しみが生じます...

誰かがこれをやったことがありますか?おそらくポインタを1つか2つ持っていますか? または、どこかにリンクされているウォークスルーを知っていますか?

ありがとう!