0

UISegmentSwitchのコードがありますが、機能しません。

コード:

- (IBAction)seg:(id)sender {
switch (segSwitch.selectedSegmentIndex) {
    case 0:
        NSLog(@"test1");
        break;

    case 1:
        NSLog(@"Testy");
        break;

    default:
        break;
}
}

もちろん、すべてが宣言され、接続されています。

前もって感謝します

4

3 に答える 3

3

IBActionを「値が変更されました」スロットまたは「内部の修正」スロットに配線しましたか?UISegmentedControlsの「値が変更されました」に登録する必要があります。

于 2012-09-04T16:36:18.050 に答える
1

UISegmentSwitchについて聞いたことがありませんが、UISegmentedControlについて話していると思います。

switchステートメントにブレークポイントを設定して、seg:メソッドが呼び出されているかどうかを確認してください。そうでない場合は、メソッドをUISegmentedControlに適切に接続していません。これは簡単に修正できますが、さらにコードを表示する必要があります。

segSwitch.selectedIndexの代わりにsender.selectedSegmentIndexを使用する必要があります。期待する値を取得しているかどうかを確認するために、switchステートメントの前に値をNSLogします(またはデバッガーでチェックします)。


メソッドを呼び出せなかった理由はいくつかあります。Cyrilleが提案したものがありそうだと思います。

まず第一に、あなたのコントロールが実際に接触していることを確認してください。別のセグメントをタップすると、選択したセグメントは変わりますか?そうでない場合は、あなたがコントロールするよりもおそらく触れられていません。コントロールとそのスーパービューのuserInteractionEnabledがYESに設定されていることを確認してください。

次に、ストーリーボードでセグメント化されたコントローラーを選択し、Xcodeインスペクターウィンドウを開いて、インスペクターウィンドウの上部にある最後(6番目または右端)のタブを選択します。ここでは、どのイベントがどのメソッドに接続されているかを確認できます。sendイベントは値が変更され、ファイルの所有者セグメントに接続されている必要があります。

また、ファイルの所有者が正しいViewControllerに設定されていることを確認することもできます。

于 2012-09-04T15:18:19.493 に答える
0

このようにしてみてください

- (IBAction)seg:(id)sender {

        UISegmentedControl *yourSegCtrl=(UISegmentedControl *)sender;

        switch (yourSegCtrl.selectedSegmentIndex) {
            case 0:
                NSLog(@"test1");
                break;

            case 1:
                NSLog(@"Testy");
                break;

            default:
                break;
        }
}

また、セグメント化されたコントロールがIBActionに接続されていることを確認してください

于 2012-09-04T16:30:16.383 に答える