web-dev-qa-db-ja.com

UISegmentedControl deselect(どのセグメントも選択しないようにします)

実際、タイトルには私の質問が含まれています。 UISegmentedControlがあり、現在選択されているタブの選択を解除する必要があります。私は試した:

[menu setSelectedSegmentIndex:-1];

メニューはuisegmentedcontrolのUBOutletですが、これは私に例外を与えます。誰かが何か考えを持っていますか?ピーターありがとう

44
dusker

コードのどこかで適切な[myArray length]ではなく[myArray count]を呼び出したと思います。 NSArrayはcountメソッドを使用し、それに含まれるアイテムの数の長さではありません。

0
David Kanarek

これを行う正しい方法は次のとおりです。

[menu setSelectedSegmentIndex:UISegmentedControlNoSegment];
240
Calin Drule

セグメント化されたコントロールで一時的な選択を作成しようとしていると思います。インターフェイスビルダーで、segmentedcontrolを一時的に設定します。またはあなたができるコードで:

menu.momentary = YES;
31
dombesz

SegmentedControlを.momentary = YESに設定すると、ユーザーがsegmentedControlを操作する方法が変わります。ページが読み込まれるときに最初は何も選択したくないが、ユーザーが選択した後、segmentedControlが同じように動作する場合は、次のようなものが必要になります。

Swift 4ソリューション

 @IBOutlet weak var segmentedControl: UISegmentedControl!

 self.segmentedControl.selectedSegmentIndex = UISegmentedControlNoSegment
28
Dan Leonard

スウィフト4

@IBOutlet weak var segmentControl: UISegmentedControl! {
    didSet {
        segmentControl.selectedSegmentIndex = UISegmentedControl.noSegment
    }
}

これをインターフェースビルダーのxcode 6で行うことができます:

Deselect the 'Selected' option under segmented control behaviour in attributes inspector.

3
Zaxter

Swiftソリューション:@IBOutlet weak var mySegmentedControl: UISegmentedControl!およびmySegmentedControl.selectedSegmentIndex = -1

2
Tom Daniel

私はこの種の相互作用をサポートするクラスをしました:

class UIDeselectableSegmentedControl: UISegmentedControl {

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        let previousSelectedSegmentIndex = self.selectedSegmentIndex

        super.touchesEnded(touches, with: event)

        if previousSelectedSegmentIndex == self.selectedSegmentIndex {

            self.selectedSegmentIndex = UISegmentedControl.noSegment
            let touch = touches.first!
            let touchLocation = touch.location(in: self)
            if bounds.contains(touchLocation) {
                self.sendActions(for: .valueChanged)
            }
        }
    }
}

その主な利点は、Storyboard/Xib/ViewCodeが使用しているクラスを変更する必要があるだけで、これはチャームのように機能することです;]

1
RodolfoAntonici