2015-10-11 2 views
0

Я хочу использовать этот сегментированный элемент управления для отображения некоторой информации, но мне было трудно это сделать. Вот мой код:UiSegmentedControler меняет вид

@synthesize segmentedControl; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSArray *itemArray = [NSArray arrayWithObjects: @"Player 1", @"Player 2", nil]; 
    segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray]; 
    segmentedControl.frame = CGRectMake(12, 100, 350, 30); 
    [segmentedControl addTarget:self action:@selector(segmentAction) forControlEvents: UIControlEventValueChanged]; 
    segmentedControl.selectedSegmentIndex = 0; 
    [self.view addSubview:segmentedControl]; 

} 

-(void) segmentAction { 

    if (segmentedControl.selectedSegmentIndex == 0) { 
     self.view.backgroundColor = [UIColor greenColor]; 

    } 
    if (segmentedControl.selectedSegmentIndex == 1) { 
    self.view.backgroundColor = [UIColor blueColor]; 

    } 
} 

Когда я запускаю этот код, вид только меняет цвет после того, как я нажал второй сегмент. Я хочу видеть зеленый на первом контроллере представления, не имея возможности щелкнуть второй контроллер представления. Я считаю, что он должен что-то сделать с UIControlEventChanged. Как я могу сделать это, чтобы он работал так, как я хочу?

+0

Вы можете попробовать переместить свой код в viewdidappear? –

+0

@ Mr.T Это не сработало – av993

ответ

0

Ваш метод -(void) segmentAction будет вызываться при нажатии на любой из сегментов. Поэтому вам нужно установить цвет для firstViewController в viewDidLoad. Затем вы сможете изменить цвет представлений на отрезках сегмента.

+0

Это всего лишь часть программы anothe, которую я использую. Проблема в том, что когда пользователь вводит информацию в поле UItextfield, она не будет там, когда они вернутся в первый сегмент – av993

Смежные вопросы