問題タブ [uiview-hierarchy]

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 投票する
2 に答える
907 参照

ios - _UIRemoteView - Xcode でビュー階層を明らかにする

Apple の UI フレームワーク、特にContactsUI. ただし、Xcode でビュー階層をデバッグ_UIRemoteViewしようとすると、空白しか表示されません。

contact composer ビューのビュー階層の中をのぞく方法はありますか?

左側- コンポーザーの外観。
右側- Xcode ビュー階層デバッガーに表示されるもの

ここに画像の説明を入力

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

ios - iOS の「異なる」ビュー階層にアンカーがあるため、Auto Layout 制約がクラッシュしますが、

私は完全にプログラム化されたSwift 4.1を使用してiOS 11.Xアプリで作業しています。Xcode 9.4 の使用

回転をサポートして、ビューの上部までの距離が 10 ポイントの中央 (水平方向) にビューを配置しようとしています。

アプリのアーキテクチャには、次のような通常のものがあります (ストーリーボードはありません)。

  • UIWindow オブジェクトと UINavigationController をルートとする AppDelegate
  • navigationController には rootViewController として UIViewController() があります

ランドスケープ モードではstatusBarが表示されないため、自動レイアウト構成を簡素化するために、次のように にトップ アンカーを追加することにしましたnavigationBar(コードはわかりやすくするために簡略化されています)。

結果は予想通り。うまく回転し、アプリが横向きまたは縦向き (デバイスとシミュレーターの両方) で起動された場合にも正常に動作します。

ポートレート ここに画像の説明を入力

風景 ここに画像の説明を入力

今。GitHub での FastForward 1 コミット、全体的な App View アーキテクチャに変更はなく、同じコードでも、次のメッセージが表示されてクラッシュします

*** NSGenericException', reason: '共通の祖先がないため、アンカーを使用して制約をアクティブ化できません。制約またはそのアンカーは、異なるビュー階層の項目を参照していますか? それは違法です。

ここで何が起こっているのか、何か考えはありますか?. 以前の GitHub コミットから .zip をダウンロードして分離し、動作することを再確認しました!!. しかし、現在のコミットは、これに関連するコードを変更せずに失敗しますUILabel

navBar はUIWindow-> UILayoutContainerView->の一部ですUINavigationBar

  • Xcode が NSLayoutYAxisAnchor アンカーについて不平を言うのはなぜですか? (centerX と top アンカーしかありません)
  • 以前のコミットで navBar.bottomAnchor への label.topAnchor が機能するのはなぜですか (同じビュー階層にないにもかかわらず)?
0 投票する
1 に答える
398 参照

ios - ビュー コントローラの複数インスタンスの作成を避ける

複数のボタンを持つカスタム ナビゲーション バーを作成したカスタム ビュー コントローラーがあります。そのカスタム ビュー コントローラーを複数の子コントローラーの親として使用しました (複数のコントローラーで同じナビゲーション バーを使用するため)。いくつかのボタンクリック。問題は、そのボタンをクリックするたびにそのビューコントローラーのインスタンスが作成されることです。そして、同じコントローラーが表示されます。

これは、メニュー ボタン クリックのアクションです。

これは戻るボタンのクリックに対するアクションです:

viewController.view.window を試しましたが、ボタンを押すたびに baseViewController の新しいインスタンスが作成されるという問題があります。

このシナリオでコントローラーが既に提示されていることを知る方法。