Две вкладки с 2 кнопками uibuttons

#iphone #objective-c #uibutton #uisegmentedcontrol

#iPhone #objective-c #uibutton #uisegmentedcontrol

Вопрос:

У меня есть следующие кнопки:

 // First Tab selected
UIButton *firstTabButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
firstTabButton.frame = CGRectMake(75, 42, 153, 42);
[firstTabButton setTitle:@"FirstTab selected" forState:UIControlStateNormal];
[firstTabButton addTarget:self action:@selector(tabToggler:) forControlEvents:UIControlEventTouchUpInside];
[firstTabButton setBackgroundImage:[UIImage imageNamed:@"FirstTabActive.png"] forState:UIControlStateNormal];
firstTabButton.adjustsImageWhenHighlighted = NO;
[self.view addSubview:firstTabButton];

// First Tab

UIButton *firstTabButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
firstTabButton.frame = CGRectMake(75, 42, 153, 42);
[firstTabButton setTitle:@"FirstTab selected" forState:UIControlStateNormal];
[firstTabButton addTarget:self action:@selector(tabToggler:) forControlEvents:UIControlEventTouchUpInside];
[firstTabButton setBackgroundImage:[UIImage imageNamed:@"FirstTab.png"] forState:UIControlStateNormal];
firstTabButton.adjustsImageWhenHighlighted = NO;
[self.view addSubview:firstTabButton];

//Second Tab Active
UIButton *secondTabButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
secondTabButton.frame = CGRectMake(75, 42, 153, 42);
[secondTabButton setTitle:@"Second Tab Active" forState:UIControlStateNormal];
[secondTabButton addTarget:self action:@selector(tabToggler:) forControlEvents:UIControlEventTouchUpInside];
[secondTabButton setBackgroundImage:[UIImage imageNamed:@"SecondTabActive.png"] forState:UIControlStateNormal];
secondTabButton.adjustsImageWhenHighlighted = NO;
[self.view addSubview:secondTabButton];
appDelegate = [[UIApplication sharedApplication] delegate];

//Second Tab
UIButton *secondTabButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
secondTabButton.frame = CGRectMake(75, 42, 153, 42);
[secondTabButton setTitle:@"Second Tab" forState:UIControlStateNormal];
[secondTabButton addTarget:self action:@selector(tabToggler:) forControlEvents:UIControlEventTouchUpInside];
[secondTabButton setBackgroundImage:[UIImage imageNamed:@"SecondTabActive.png"] forState:UIControlStateNormal];
secondTabButton.adjustsImageWhenHighlighted = NO;
[self.view addSubview:secondTabButton];
appDelegate = [[UIApplication sharedApplication] delegate];
  

В первый раз я хотел бы отобразить первую активную вкладку и 2-ю вкладку.

Как будет выглядеть метод tabToggler? Как мне поступить?

Ответ №1:

Вы должны просто использовать 2 экземпляра UIButton и объявить их как properties / ivars в вашем файле .h . Затем просто переключите свойства, которые делают кнопку активной / неактивной в вашем методе toggleActiveTab.

Вот так:

In .h

 @interface...
{
  UIButton *_firstButton;
  UIButton *_secondButton;
}
  

In .m (loadView или viewDidLoad, в зависимости от того, используете ли вы перо или нет):

 _firstButton = <code to set up the first button>;
_secondButton = <code to set up the second button>;
  

Наконец, ваш метод toggleActiveTab может выглядеть примерно так:

 - (void)toggleActiveTab
{
  BOOL activateSecond = _firstButton.enabled;
  _firstButton.enabled = !activateSecond;
  _secondButton.enabled = activateSecond;

  // whatever other setup
}
  

Не забудьте отпустить 2 кнопки в вашем методе освобождения.

Также: рассматривали ли вы возможность использования вместо UITabBarController?

Комментарии:

1. Не могли бы вы привести мне пример кода? Я довольно новичок в objective-c… Я хочу также переключить некоторые данные из табличного представления …; этот ViewController уже помещен в UITabBarController Еще одна причина, по которой я выбрал кнопки, заключается в том, что я могу немного их настроить

2. Итак, вы хотите два уровня вкладок? Вы уверены, что это хорошее дизайнерское решение?

3. если я нажимаю на активную кнопку, активное состояние переходит в другое. Есть какие-нибудь подсказки, как это исправить?