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。这很容易解决,但您必须显示更多代码。

您应该使用 sender.selectedSegmentIndex 而不是 segSwitch.selectedIndex。NSLog 在 switch 语句之前的值(或在调试器中检查它)以查看您是否获得了预期的值。


无法调用该方法的原因有几种。我认为 Cyrille 建议的那个很可能。

首先,确保您的控件实际上正在被触摸。当您点击不同的段时,选定的段是否会发生变化?如果没有,那么您所控制的可能是没有接触。检查以确保控件及其超级视图的 userInteractionEnabled 设置为 YES。

其次,在情节提要中选择分段控制器,打开 Xcode 检查器窗口,然后选择检查器窗口顶部的最后一个(第 6 个或最右边)选项卡。在这里,您将看到什么事件与什么方法相关联。发送事件应该是 Value Changed 并且应该连接到 File's Owner seg:。

您还可以检查以确保将文件的所有者设置为正确的视图控制器。

于 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 回答