#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. если я нажимаю на активную кнопку, активное состояние переходит в другое. Есть какие-нибудь подсказки, как это исправить?