段控制未被选中或突出显示

时间:2012-01-30 17:04:25

标签: iphone objective-c

viewDidLoad中

v1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
v2= [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];

//然后我将组件添加到这两个视图中。

对于v1,我添加了几个文本文件和按钮 对于v2,我添加了几个标签和一个图像

并在同一viewDidLoad方法中,我将一个段控制器添加到navigationcontroller;

segment = [[UISegmentedControl alloc] initWithFrame:CGRectMake(x,y, height,width)];           
segment .segmentedControlStyle = UISegmentedControlStylePlain;
[segment insertSegmentWithTitle:@"first" atIndex:0 animated:NO];
[segment insertSegmentWithTitle:@"second" atIndex:1 animated:NO];
[segment setSelectedSegmentIndex:0];
segment .momentary = YES;
[segment addTarget:self action:@selector(segmentclicked:) forControlEvents:UIControlEventValueChanged];
segmentControllerView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 300.0, 50.0)];
segmentControllerView .autoresizingMask = 0;
[segmentControllerView  addSubview:segment ];
self.navigationItem.titleView = segmentControllerView ;

现在在;

-(void)segmentclicked:(id)sender {
if ((((UISegmentedControl *)sender).selectedSegmentIndex) == 0 ) {
    [v1 setHidden:YES];
    [v2 setHidden:NO];

    [self.view addSubview:self.v1];
    [loginSignupSegment setSelectedSegmentIndex:0]; <<<<<<<<<
    [segment addSubview:segment];
    self.navigationItem.titleView = segmentControllerView;
} else {
    //toggle the correct view to be visible
    [v2 setHidden:YES];
    [v1 setHidden:NO];     

    [self.view addSubview:self.v2];
    [segment setSelectedSegmentIndex:1]; <<<<<<<<<<<<<<<<
    [segmentControllerView addSubview:segment];
    self.navigationItem.titleView = segmentControllerView;
}}

当我切换视图时,我没有看到突出显示的视图段(我已在代码中完成但未显示) - 请参阅代码中的<<<<<<<

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我不认为你的代码是最好的方法。但我不知道所有的项目。 为解决它删除

segment.momentary = YES;

并替换 - (void)segmentclicked:(id)sender with:

-(void)segmentclicked:(id)sender {
    if ((((UISegmentedControl *)sender).selectedSegmentIndex) == 0 ) {
        [v1 setHidden:YES];
        [v2 setHidden:NO];

        [self.view addSubview:v1];
        [segment setSelectedSegmentIndex:0];
    } else {
        //toggle the correct view to be visible
        [v2 setHidden:YES];
        [v1 setHidden:NO];     

        [self.view addSubview:v2];
        [segment setSelectedSegmentIndex:1];
}

}

希望这对你有所帮助。