UIButton setTitle forState не работает
Я пытаюсь установить текст UIButton на новом представлении, когда нажата кнопка "Далее" из предыдущего представления. Я правильно установил IBOutlet, и я просмотрел все ответы на это, но он просто не работает вообще.
Вот пример того, что я пытаюсь сделать:
- (IBAction)computeQuiz:(id)sender
{
[fiveFootUniversalResults setTitle:@"Test" forState:UIControlStateNormal];
}
- (IBAction)jumpT10ResultsView:(id)sender
{
NSString *nibFileToLoad = @"JumpT10Results";
UIDevice *device = [UIDevice currentDevice];
if([device userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{
nibFileToLoad = [nibFileToLoad stringByAppendingString:@"-iPad"];
}
JumpmasterPathfinderViewController *nextView = [[JumpmasterPathfinderViewController alloc] initWithNibName:nibFileToLoad bundle:nil];
// Modal view controller
nextView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:nextView animated:YES];
[nextView release];
[scrollView setContentSize:CGSizeMake(imageViewWidth, imageViewHeight + 44.0)];
}
Эти действия соединены с кнопкой на предыдущем представлении. Вид загружается отлично и все, единственная проблема заключается в том, что текст не будет изменяться на кнопке. Я на 100% уверен, что я правильно установил IBOutlets. Я просто не знаю, что я делаю неправильно. Любые идеи?
Ответы
Ответ 1
Он не работает, потому что IB устанавливает attributedTitle
вместо title
.
Попробуйте это вместо:
NSAttributedString *attributedTitle = [self.myButton attributedTitleForState:UIControlStateNormal];
NSMutableAttributedString *mas = [[NSMutableAttributedString alloc] initWithAttributedString:attributedTitle];
[mas.mutableString setString:@"New Text"];
[self.myButton setAttributedTitle:mas forState:UIControlStateNormal];
Или, альтернативно:
[self.myButton setAttributedTitle:nil forState:UIControlStateNormal];
[self.myButton setTitle:@"New Text" forState:UIControlStateNormal];
(Второй вариант не сохранит ваше форматирование.)
Ответ 2
попробуйте этот код....
UIButton *backbtn=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 68, 38)];
[backbtn setTitle:@"Your string" forState:UIControlStateNormal];
//[backbtn setImage:[UIImage imageNamed:@"BackBtn.png"] forState:UIControlStateNormal];
[backbtn addTarget:self action:@selector(backBtnClicked) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:backbtn];
Ответ 3
Попробуйте позвонить
- (IBAction)computeQuiz:(id)sender
в
- (IBAction)jumpT10ResultsView:(id)sender
а затем одновременным вызовом при нажатии кнопки одновременно, как в нижнем коде, вызов метода me не приводит к выделению объекта кнопки 5FootUniversalResults.
- (IBAction)computeQuiz:(id)sender
{
[fiveFootUniversalResults setTitle:@"Test" forState:UIControlStateNormal];
}
- (IBAction)jumpT10ResultsView:(id)sender
{
NSString *nibFileToLoad = @"JumpT10Results";
UIDevice *device = [UIDevice currentDevice];
if([device userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{
nibFileToLoad = [nibFileToLoad stringByAppendingString:@"-iPad"];
}
JumpmasterPathfinderViewController *nextView = [[JumpmasterPathfinderViewController alloc] initWithNibName:nibFileToLoad bundle:nil];
// Modal view controller
nextView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:nextView animated:YES];
[nextView release];
[scrollView setContentSize:CGSizeMake(imageViewWidth, imageViewHeight + 44.0)];
[self computeQuiz:nil];
}
Ответ 4
Это также может произойти, если вы забудете использовать @synthesize
на кнопке или связанных с ней переменных.
Ответ 5
Ответ в приведенной ниже ссылке помог мне, когда у меня была такая же проблема. Это позволило мне сохранить все атрибуты в словаре. Я создал новую атрибутную строку с другим текстом, но с теми же атрибутами, которые затем я добавил к кнопке, которую я хотел изменить. Надеюсь, это поможет.
изменить текст атрибута UILabel без потери форматирования?
Ответ 6
попробовать:
[fiveFootUniversalResults setBackgroundColor:[UIColor redColor]];
[fiveFootUniversalResults setTitle:@"Test" forState:UIControlStateNormal];
Возможно, цвет фона совпадает с цветом заголовка. Вы ничего не увидите, когда пишете черную бумагу черным пером. Попробуйте установить цвет фона или цвет заголовка перед вызовом setTitle.