2016-06-24 8 views
0

私たちのアプリに入れている一時的な修正のためにちょっとした疑問があります。ひどい理由から、私たちは3つのセグメントを持つセグメント化されたコントロールを持っていますが、3つのtableViewデータソースの中にそれぞれのセグメント化されたコントロールの3つのインスタンスがあります(これは最終的な解決策ではないと思っています...)セグメント化されたコントロールセグメントが変更されないようにします

とにかく、このひどい設定のために、新しいセグメントを選択すると、セグメント化されたコントロールのインスタンスAに新しいインデックスが選択されます。その後、データソースを交換し、reloadDataを呼び出します。ここで、インスタンスAと同じインデックスを持つセグメント化されたコントロールのインスタンスBが選択されました。元のセグメントを選択すると、インスタンスBはそのインデックスを新しいインデックスに設定し、データをリロードしてインスタンスAを表示します。ただし、インスタンスAには古いインデックスが選択されているため、誤ったインデックスが選択されています。

私は現在、タップのデリゲートコールバックで選択したインデックスを手動でリセットすることでこれを解決しています。しかし、理想的なのは、セグメント化されたコントロールに、選択肢を変更したくないということを伝えることですが、ユーザーがそれを操作できるようにしたいと考えています。それはまったく可能ですか?私はこれがひどい解決策であることを理解しています、私たちは将来これを変更したいと思いますので、今のところ私の提案はありますか?

答えて

1

最後に、セグメントコントロールのインスタンスAが再び表示されたら、selectedSegmentIndexプロパティを使用してセグメントを目的のセグメントに設定するために、cellForRowAtIndexPathを記述する必要があります。こうすることで、インスタンスAが再び表示されるときに、正しいインデックスが表示されます。

+0

新しいデータをすべて取得した後、セグメントを正しいセグメントに戻しました。しかし、これはハッキリと感じています。これは、世界で最も悪いことではありません。セグメント化されたコントロールをセルとして使用することは、最初はハックですが、この修正の「ハッキーさ」を維持しようとします。できるだけ少なくしてください。 –

+0

これはずっと前に帆走した "ハッキー"な船のようです。今あなたは正しく実行した混乱を作ることを試みているだけです。 –

関連する問題