Подтвердить что ты не робот

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. Я просто не знаю, что я делаю неправильно. Любые идеи?

4b9b3361

Ответ 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.