3

(Googleでヒットしなかったので自問自答しましたが、試行錯誤の末に解決策を見つけることができました)

iOS 5 および 6 では、Apple は InterfaceBuilder が「埋め込み」ビューコントローラーをサポートするようにするためにいくつかの醜いハックを追加しました。彼らはそれらがどのように機能するかを文書化せず、コードレベルの例のみを示し、ケースの限られたサブセットのみをカバーしています.

特に、時々隠されるビューコントローラーを埋め込みたいのですが、明らかなアプローチを試みてもうまくいきません (白い四角形が残されます):

childViewController.view.hidden = TRUE;
4

4 に答える 4

5

コンテナ ビューに IBOutlet を作成して、

self.containerView.hidden = YES;
于 2013-08-26T22:30:46.287 に答える
3

彼らがどのようにそれを行ったかは、iOS 2以降に機能した手動の方法のバリエーションのようです(ただし、ビューのみをサポートし、ビューコントローラーはサポートしていませんでした)-親に埋め込まれた本物の本物のUIViewがあります(ソースコードの例には記載されていません) - InterfaceBuilder を使用する場合にのみ追加されます!)。

したがって、代わりに、次のようにします。

childViewController.view.superview.hidden = TRUE;

...できます!

また、直感に反して、viewDidLoad 以降からいつでもこのメソッドを呼び出すことができます。Apple の「埋め込みセグエ」ハックは、viewDidLoad が呼び出される前に実行されます。

したがって、起動時にこれを実行して、childViewController を非表示にすることができます。

于 2013-08-26T21:24:18.877 に答える
3

これを使って[self.childviewController setHidden:YES];

于 2013-08-28T13:02:57.707 に答える
0

誰かがすべての子ビューを非表示/表示するか、それらを反復する必要がある場合:

func hideChildrenViews() {
    for view in self.view.subviews {
        (view as! UIView).hidden = true
    }
}

func showChildViews() {
    for view in self.view.subviews {
        (view as! UIView).hidden = false
    }
}
于 2015-05-15T14:37:24.823 に答える