У меня есть IBAction, связанный с кнопкой в моем Interface Builder.
Можно ли изменить текст на кнопке (в IB) из моего кода во время выполнения?
У меня есть IBAction, связанный с кнопкой в моем Interface Builder.
Можно ли изменить текст на кнопке (в IB) из моего кода во время выполнения?
Если у вас есть кнопка, которая подключается к действию в вашем коде, вы можете изменить заголовок без переменной экземпляра.
Например, если для кнопки установлено это действие:
-(IBAction)startSomething:(id)sender;
Вы можете просто сделать это в методе:
-(IBAction)startSomething:(id)sender {
[sender setTitle:@"Hello" forState:UIControlStateNormal];
}
Или, если вы хотите переключить имя кнопки, вы можете создать BOOL
с именем "buttonToggled" (например) и переключить имя таким образом:
-(IBAction)toggleButton:(id)sender {
if (!buttonToggled) {
[sender setTitle:@"Something" forState:UIControlStateNormal];
buttonToggled = YES;
}
else {
[sender setTitle:@"Different" forState:UIControlStateNormal];
buttonToggled = NO;
}
}
UIButton *myButton;
[myButton setTitle:@"My Title" forState:UIControlStateNormal];
[myButton setTitle:@"My Selected Title" forState:UIControlStateSelected];
Да. Этот метод используется в UIButton -setTitle:forState:
.
[myButton setTitle:@"Play" forState:UIControlStateNormal];
myapp.h
{
UIButton *myButton;
}
@property (nonatomic,retain)IBoutlet UIButton *myButton;
myapp.m
@synthesize myButton;
-(IBACtion)buttonTitle{
[myButton setTitle:@"Play" forState:UIControlStateNormal];
}
Другой способ переключения:
- (IBAction)signOnClick:(id)sender
{
if ([_signOnButton.titleLabel.text isEqualToString:@"Sign off"])
{
[sender setTitle:@"Sign on" forState:UIControlStateNormal];
}
else
{
[sender setTitle:@"Sign off" forState:UIControlStateNormal];
}
}
Нет необходимости добавлять, если {} else {} поток управления. Инициализируйте тексты кнопок для разных состояний в конструкторе View или ViewController:
[btnCheckButton setTitle:@"Normal" forState:UIControlStateNormal]; [btnCheckButton setTitle:@"Selected" forState:UIControlStateSelected];
Затем переключите состояние кнопки на выбранное:
[btnCheckButton setSelected:YES];
Затем переключите состояние кнопки в положение Normal:
[btnCheckButton setSelected:NO];