我有一个NSSegmentedControl,其中两个段在Interface Builder中设置为“全选”模式。无论我尝试什么,即使默认情况下段0甚至被禁用并且也无法选择,我都无法获得-selectedSegment返回除0以外的任何值。单击控件上的任何段时,将调用以下相关函数:

-(IBAction)changeStep:(id)sender
{
    [stepContainer setHidden:TRUE];
    [(NSView *)[[wizard stepArray] objectAtIndex:(NSInteger)[wizard step]] removeFromSuperview];
    switch ([[navigationButton cell] selectedSegment])
    {
    case 0:
        [wizard setStep:(NSInteger *)[wizard step]-1];
        break;
    case 1:
        [wizard setStep:(NSInteger *)[wizard step]+1];
        break;
    default:
        break;
    }
    //[[navigationButton cell] setSelected:FALSE forSegment:[navigationButton selectedSegment]];

    if ([wizard step] > 0)
    {
        [wizard setStep:0];
        [navigationButton setEnabled:FALSE forSegment:0];
    }

    NSLog(@"%d", [wizard step]);
    [stepContainer addSubview:(NSView *)[[wizard stepArray] objectAtIndex:(NSInteger)[wizard step]]];
    [stepContainer setHidden:FALSE withFade:TRUE];
}


我也尝试使用-isSelectedForSegment,但结果相同。
您能提供的任何帮助都会很棒,我不知道我做错了什么。谢谢!
SphereCat1

编辑:这是一个facepalm时刻,请参阅下面我的回答。

最佳答案

好吧,这是一个面部表情时刻。原来我是在NSLogging错误的事情,并且我的步长递增/递减逻辑中只有一个错误。

一切都更好! :)

面容
SphereCat1

关于objective-c - NSSegmentedControl -selectedSegment始终返回0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2846100/

10-11 15:41