私のコードは少し異なりますが、私はこのようなプッシュオンプッシュオフのようなボタンを作成しようとしています:
UIButton* alertsButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
alertsButton.frame = CGRectMake(170, 43.5, 130, 130);
[alertsButton.titleLabel setFont:[UIFont fontWithName:@"Novecento wide" size:22]];
[alertsButton setTitle:NSLocalizedString(@"Alerts", nil) forState:UIControlStateHighlighted];
[alertsButton setTitle:NSLocalizedString(@"Alerts", nil) forState:UIControlStateNormal];
[alertsButton setTitle:NSLocalizedString(@"Alerts", nil) forState:UIControlStateSelected];
[alertsButton addTarget:self action:@selector(toggleAlerts:)forControlEvents:UIControlEventTouchUpInside];
-(void)toggleAlerts:(id)sender
{
UIButton *button = (UIButton *)sender;
if (button.selected) {
button.selected = NO;
[button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateNormal];
[button.titleLabel setFont:[UIFont fontWithName:@"Novecento wide" size:22]];
NSLog(button.titleLabel.text);
} else {
button.selected = YES;
[button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateNormal];
[button.titleLabel setFont:[UIFont fontWithName:@"Novecento wide" size:22]];
NSLog(button.titleLabel.text);
}
}
ボタンを押すと、期待どおりに背景が変わりますが、デバッグコンソールにテキストが表示されているのにラベルが消えます。結果なしでこれを試しました:(