0

私はセグメントコントローラーを持っています。セグメント1をタップすると、ビューが表示され、2番目のセグメントをタップすると、このセグメントコントローラーのすぐ下に別のビューが表示されます。今私は、このセグメント コントローラが存在するビューが表示されたときに、最初のセグメント コントローラ ビューが表示され、最初のセグメント コントローラ ボタンがタップされているように見えるようにしたいと考えています。

このように自分の見解を示すことで、このことを成し遂げることができます。しかし、私は不必要なことをしています.. 他の方法でアドバイスしてください。

-(void)loadTest
 {
if(!cabinInfoDetailsViewObj)
{
    cabinInfoDetailsViewObj = [[CabinInfoDetailsView alloc]initWithFrame:CGRectMake(232, 188, 617,412)];
}

[self addSubview:cabinInfoDetailsViewObj];

[CabinInfoPopupSegmentControl setImage:[UIImage imageNamed:@"16.4_WhiteButton.png"] forSegmentAtIndex:0];
[CabinInfoPopupSegmentControl setImage:[UIImage imageNamed:@"16.4_GreyButton.png"] forSegmentAtIndex:1];

}

これはセグメントコントローラ部分です

- (IBAction)CabinInfoSegmentButtonTapped:(id)sender
{
if(CabinInfoPopupSegmentControl.selectedSegmentIndex == 0)
{

    if(!cabinInfoDetailsViewObj)
    {
        cabinInfoDetailsViewObj = [[CabinInfoDetailsView alloc]initWithFrame:CGRectMake(232, 188, 617,412)];
    }
    [CabinInfoPopupSegmentControl setImage:[UIImage imageNamed:@"16.4_WhiteButton.png"] forSegmentAtIndex:0];
    [CabinInfoPopupSegmentControl setImage:[UIImage imageNamed:@"16.4_GreyButton.png"] forSegmentAtIndex:1];
    cabinInfoDetails.textColor = [UIColor blueColor];
    cabinInfoLocate.textColor =[UIColor blackColor];

    [cabinInfoDeckPlansViewObj removeFromSuperview];
    [self addSubview:cabinInfoDetailsViewObj];

}
if(CabinInfoPopupSegmentControl.selectedSegmentIndex == 1)
{
    if(!cabinInfoDeckPlansViewObj)
    {
        cabinInfoDeckPlansViewObj = [[CabinInfoDeckPlansView alloc]initWithFrame:CGRectMake(232, 188, 617,412)];
    }

    [CabinInfoPopupSegmentControl setImage:[UIImage imageNamed:@"16.4_WhiteButton.png"] forSegmentAtIndex:1];
    [CabinInfoPopupSegmentControl setImage:[UIImage imageNamed:@"16.4_GreyButton.png"] forSegmentAtIndex:0];

    cabinInfoDetails.textColor = [UIColor blackColor];
    cabinInfoLocate.textColor =[UIColor blueColor];

    [cabinInfoDetailsViewObj removeFromSuperview];
    [self addSubview:cabinInfoDeckPlansViewObj];

}
4

1 に答える 1

2

私のアプリケーションでは、このコードを使用しました:

//Give .h file UISegmentedControl  *seg;


- void)viewDidLoad
{

 seg        = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Notification", @"Messages", nil]];
seg.tag                         = 1;
seg.segmentedControlStyle       = UISegmentedControlStyleBar;
seg.frame                       = CGRectMake(1, 0, 318, 45);
[seg addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
seg.tintColor                   = [UIColor whiteColor];
seg.selectedSegmentIndex        = 0;
seg.backgroundColor=[UIColor clearColor];
[seg setDividerImage:[UIImage imageNamed:@""] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[seg setImage:[UIImage imageNamed:@"notificationselected.png"] forSegmentAtIndex:0];
[seg setImage:[UIImage imageNamed:@"message.png"] forSegmentAtIndex:1];
[self.view addSubview:seg];

}

pragma mark - UISegmentedControl
- (IBAction)segmentAction:(id)sender
{
UISegmentedControl *segControll = (UISegmentedControl *)sender;
if (segControll.selectedSegmentIndex==0)
{
    [segControll setImage:[UIImage imageNamed:@"notificationselected.png"] forSegmentAtIndex:0];
    [segControll setImage:[UIImage imageNamed:@"message.png"] forSegmentAtIndex:1];

 //right code for select the segmentcontroll.index=0
}
else if (segControll.selectedSegmentIndex==1)
{
    [segControll setImage:[UIImage imageNamed:@"notification.png"] forSegmentAtIndex:0];
    [segControll setImage:[UIImage imageNamed:@"messageselected.png"] forSegmentAtIndex:1];

    //right code for select the segmentcontroll.index=1
  }
}

それがあなたを助けることを願っています。

于 2013-10-02T05:59:30.473 に答える