2013-05-23 3 views
0

У меня есть два ViewControllers. У одного есть кнопка, а у другого ViewController есть сегментированный элемент управления, чтобы включить или выключить эту кнопку. Мой вопрос: как я могу получить доступ к кнопке из ViewController 1 для отключения в ViewController 2? Благодаря!Кнопка доступа от другого ViewController в iOS?

ответ

2

Самый простой способ - объявить кнопку как свойство в заголовочном файле и получить доступ непосредственно из другого файла. Однако это некрасиво и увеличивает связь кода. Вы можете использовать один контроллер как другой делегат и сообщить делегату, когда состояние управления сегментом изменилось.

0

Вместо того, чтобы объявить эту кнопку как свойство в файле заголовка

написать метод в viewcontroller1, который имеет кнопку и в этом методе включения кнопки включения/выключения

Теперь вы можете вызвать этот метод из другой viewcontroller2, который имеет сегментированное управление для включения или выключения кнопки.

2

или же вы можете использовать уведомление о

В View Controller 1:

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(togglebutton) name:@"togglebutton" object:nil]; 

и метод

-(void)togglebutton{ 
    //turn button on/off 
} 

В ViewController 2:

[[NSNotificationCenter defaultCenter]postNotificationName:@"togglebutton" object:nil]; 
0

Возможно, не самый лучший Solut ion, но я думаю, что ваш сегментированный элемент управления - это какой-то переключатель для вашего приложения.

В этом случае в вашем ViewController2, когда вы измените значение вашего сегментированного управления, вы можете написать его NSUserDefaults так:

-(void)segmentedControlChanged:(id)sender 
{ 
    UISegmentedControl *ctrl = (UISegmentedControl *)sender; 

    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:ctrl.selectedSegmentIndex] forKey:@"selectedIndex"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

Затем в viewDidAppear методы ViewController1 «s , вы проверяете для значения SelectedIndex как так:

-(void)viewWillAppear:(BOOL)animated 
{ 
    NSNumber *selectedIndex = [[NSUserDefaults standardUserDefaults] valueForKey:@"selectedIndex"]; 

    if(selectedIndex != nil) 
    { 
     if([selectedIndex intValue] == 0) 
     { 
      NSLog(@"do action 1"); 
     } 
     else 
     { 
      NSLog(@"else do action 2"); 
     } 
    } 
} 

бы ЧТ достаточно для ваших намерений?

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