2017-02-06 8 views
0

リアルタイムIOSダッシュボードを構築していますが、取得したデータに応じてUI要素(現在はUISliderまたはUISwitch)をUITableViewCell内に動的に表示する必要があります。テーブルビューセル(および関連付けられたXIB)には、左側にラベルがあり、右側にUISwitchまたはUISliderがあります。UIコントロールとハンドル制約を適切に表示/隠す方法

各コンポーネントのisHiddenプロパティを使用してUI要素を表示/非表示できますが、インターフェイスビルダーで各コンポーネントの上にUIコンポーネントを配置しても、autolayout制約は常にUI要素を隣り合わせに配置しますその他(私はスライダまたはスイッチの両方を表示する必要があるため)。 BTW - 私はいくつかのRXSwiftの問題のために複数のUITableViewCellを使用することはできません。

+0

XIBファイル – Mentos

答えて

0

'hidden'プロパティは自動レイアウトの制約を変更しません。
コントロールは非表示になりますが、引き続きそのスペースを占有します。
これは、子コンポーネントの 'hidden'プロパティを追跡し、プロパティが変更されるたびに制約を変更するコンポーネントです。
スライダーとスイッチをUIStackViewの内側に置き、どちらかを表示するかどうかを設定できます。
私はそうでもしません。
私はUISwitchを持つ細胞とUISliderを持つ細胞の2種類の細胞を作って、その内容に基づいて別の細胞を使いたいと思います。

+0

のスクリーンショットを添付してくださいは、フィードバックのためにあなたにiMosesをありがとう...私はもともとUISliderまたはUISwitchを処理するために複数のカスタムセルを持っていたが、私は使用に私のアプリを変換しましたRxSwiftとそのフレームワークはテーブルビュー(私はそれを実装した方法)ごとに複数のセルを処理しないので、私はちょうど単一のセルを使用することに固執しています。私はUIStackViewを試してみましょう(以前はこれを使用していませんでした)...私はそれがエレガントではないことを知っていますが、私がうまくいくとデザインの決定を下しました:-) – Cameron

0

Swiftでは、 'hidden'プロパティは動的varではありません。あなたはそれを観察することはできませんが、プロパティセッターを観察しようとすることができます。

詳細:http://simcai.com/2017/03/29/2017-03-29/

let view = UIView() 

view.rx.methodInvoked(#selector(setter: showAllView.isHidden)).subscribe { (isHidden) in 
    print("\(isHidden)") 
} 

view.isHidden = true 
関連する問題